import uuid from datetime import datetime from typing import Any from pydantic import BaseModel, model_validator from app.schemas.user import UserOut class RegistrationCreate(BaseModel): championship_id: uuid.UUID category: str | None = None level: str | None = None notes: str | None = None class RegistrationUpdate(BaseModel): status: str | None = None video_url: str | None = None category: str | None = None level: str | None = None notes: str | None = None class RegistrationOut(BaseModel): model_config = {"from_attributes": True} id: uuid.UUID championship_id: uuid.UUID user_id: uuid.UUID category: str | None level: str | None notes: str | None status: str video_url: str | None submitted_at: datetime decided_at: datetime | None class RegistrationListItem(RegistrationOut): championship_title: str | None = None championship_event_date: datetime | None = None championship_location: str | None = None @model_validator(mode="before") @classmethod def extract_championship(cls, data: Any) -> Any: if hasattr(data, "championship") and data.championship: champ = data.championship data.__dict__["championship_title"] = champ.title data.__dict__["championship_event_date"] = champ.event_date data.__dict__["championship_location"] = champ.location return data class RegistrationWithUser(RegistrationOut): user: UserOut