import uuid from datetime import datetime, timezone from sqlalchemy import Boolean, DateTime, ForeignKey, Text from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base def _now() -> datetime: return datetime.now(timezone.utc) class ParticipantList(Base): __tablename__ = "participant_lists" id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4) championship_id: Mapped[uuid.UUID] = mapped_column( ForeignKey("championships.id", ondelete="CASCADE"), unique=True, nullable=False ) published_by: Mapped[uuid.UUID] = mapped_column( ForeignKey("users.id"), nullable=False ) is_published: Mapped[bool] = mapped_column(Boolean, nullable=False, 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), default=_now) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=_now, onupdate=_now ) championship: Mapped["Championship"] = relationship(back_populates="participant_list") organizer: Mapped["User"] = relationship()