import uuid from datetime import datetime from sqlalchemy import Boolean, DateTime, ForeignKey, Text, Uuid, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base class ParticipantList(Base): __tablename__ = "participant_lists" 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 ) published_by: Mapped[uuid.UUID | None] = mapped_column( Uuid(as_uuid=True), ForeignKey("users.id", ondelete="SET NULL") ) is_published: Mapped[bool] = mapped_column(Boolean, default=False) published_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) notes: Mapped[str | None] = mapped_column(Text) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) championship: Mapped["Championship"] = relationship(back_populates="participant_list") # type: ignore[name-defined]