diff --git a/backend/app/models/fee.py b/backend/app/models/fee.py new file mode 100644 index 0000000..375345e --- /dev/null +++ b/backend/app/models/fee.py @@ -0,0 +1,25 @@ +import uuid +from datetime import datetime +from decimal import Decimal + +from sqlalchemy import DateTime, ForeignKey, Numeric, Text, Uuid, func +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from app.database import Base + + +class Fee(Base): + __tablename__ = "fees" + + id: Mapped[uuid.UUID] = mapped_column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4) + championship_id: Mapped[uuid.UUID] = mapped_column(Uuid(as_uuid=True), ForeignKey("championships.id", ondelete="CASCADE"), nullable=False, unique=True) + video_selection: Mapped[Decimal | None] = mapped_column(Numeric(10, 2)) # video review/selection fee + solo: Mapped[Decimal | None] = mapped_column(Numeric(10, 2)) + duet: Mapped[Decimal | None] = mapped_column(Numeric(10, 2)) + group: Mapped[Decimal | None] = mapped_column(Numeric(10, 2)) + refund_note: Mapped[str | None] = mapped_column(Text) + + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) + + championship: Mapped["Championship"] = relationship(back_populates="fees") # type: ignore[name-defined]