from typing import TYPE_CHECKING from sqlalchemy import FLOAT, INTEGER, Enum, ForeignKey from sqlalchemy.orm import Mapped, mapped_column, relationship from db.base import Base from schemas.invoices import InvoiceStatus if TYPE_CHECKING: from db.models import User class Invoice(Base): __tablename__ = "invoices" id: Mapped[int] = mapped_column( INTEGER, autoincrement=True, unique=True, nullable=False, primary_key=True ) creator_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False) amount: Mapped[float] = mapped_column(FLOAT, nullable=False) status: Mapped[InvoiceStatus] = mapped_column( Enum(InvoiceStatus, name="invoicestatus"), nullable=False, default=InvoiceStatus.ACTIVE ) user: Mapped["User"] = relationship("User")