from datetime import datetime from pydantic import BaseModel, Field from app.models.enums import EventStatus, EventType, TicketTypeStatus class VenuePublic(BaseModel): id: int slug: str name: str area: str city: str address: str map_url: str | None = None description: str | None = None model_config = {"from_attributes": True} class EventMediaPublic(BaseModel): id: int image_url: str alt_text: str | None sort_order: int model_config = {"from_attributes": True} class TicketTypePublic(BaseModel): id: int name: str description: str | None price_paise: int = Field(ge=0) status: TicketTypeStatus sort_order: int remaining_quantity: int = Field(ge=0) model_config = {"from_attributes": True} class EventSummary(BaseModel): id: int slug: str title: str category: EventType status: EventStatus starts_at: datetime ends_at: datetime | None is_featured: bool cover_image_url: str | None cover_image_alt: str | None venue: VenuePublic model_config = {"from_attributes": True} class EventDetail(EventSummary): description: str | None meta_description: str | None media: list[EventMediaPublic] ticket_types: list[TicketTypePublic]