from datetime import datetime from enum import Enum as E_cls from sqlalchemy import DateTime, func, Enum from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.dialects.postgresql import BIGINT from db.base import Base class InvoiceStatus(E_cls): PENDING = "PENDING" RECEIVED = "RECEIVED" PAID = "PAID" EXPIRED = "EXPIRED" class Invoice(Base): __tablename__ = "invoices" id: Mapped[int] = mapped_column(autoincrement=True, primary_key=True) creator_id: Mapped[int] = mapped_column(BIGINT) amount: Mapped[int] = mapped_column(BIGINT) status: Mapped[InvoiceStatus] = mapped_column(Enum(InvoiceStatus)) inline_message_id: Mapped[str] = mapped_column(nullable=True) created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())