import uuid from datetime import date, datetime from decimal import Decimal from sqlalchemy import Boolean, Date, DateTime, ForeignKey, Integer, Numeric, Text, func from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import Mapped, mapped_column from app.db.base_class import Base class ContractFeePayment(Base): __tablename__ = "contract_fee_payments" id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) contract_fee_id: Mapped[uuid.UUID] = mapped_column( UUID(as_uuid=True), ForeignKey("contract_fees.id"), index=True, nullable=False ) seq: Mapped[int] = mapped_column(Integer, nullable=False) amount: Mapped[Decimal] = mapped_column(Numeric(12, 2), nullable=False) paid_date: Mapped[date | None] = mapped_column(Date, nullable=True) verified_date: Mapped[date | None] = mapped_column(Date, nullable=True) is_paid: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default="false") is_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default="false") remark: Mapped[str | None] = mapped_column(Text, nullable=True) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, server_default=func.now()) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now() )