Desi-Clans/backend/app/api/routes/events.py
2026-10-08 02:52:58 +05:30

33 lines
1.3 KiB
Python

from fastapi import APIRouter, Query
from app.core.deps import DbSession
from app.models.enums import EventStatus, EventType
from app.schemas.catalog import EventDetail, EventSummary
from app.schemas.orders import EventTicketTypePublic
from app.services.catalog import event_to_detail, event_to_summary, get_event_by_slug, list_events
from app.services.orders import list_event_ticket_types
router = APIRouter(prefix="/events", tags=["events"])
@router.get("", response_model=list[EventSummary])
def get_events(
db: DbSession,
category: EventType | None = Query(default=None),
status: EventStatus | None = Query(default=EventStatus.published),
upcoming: bool = Query(default=True),
) -> list[EventSummary]:
rows = list_events(db, category=category, status=status, upcoming=upcoming)
return [event_to_summary(row) for row in rows]
@router.get("/{event_id:int}/tickets", response_model=list[EventTicketTypePublic])
def get_event_tickets(event_id: int, db: DbSession) -> list[EventTicketTypePublic]:
rows = list_event_ticket_types(db, event_id)
return [EventTicketTypePublic.model_validate(row) for row in rows]
@router.get("/{slug}", response_model=EventDetail)
def get_event(slug: str, db: DbSession) -> EventDetail:
event = get_event_by_slug(db, slug=slug)
return event_to_detail(event)