from app.schemas.base import CamelModel class RouteResponse(CamelModel): id: int name: str game_id: int order: int parent_route_id: int | None = None class GameResponse(CamelModel): id: int name: str slug: str generation: int region: str box_art_url: str | None release_year: int | None color: str | None class RouteWithChildrenResponse(RouteResponse): children: list[RouteResponse] = [] class GameDetailResponse(GameResponse): routes: list[RouteResponse] = [] # --- Admin schemas --- class GameCreate(CamelModel): name: str slug: str generation: int region: str box_art_url: str | None = None release_year: int | None = None color: str | None = None class GameUpdate(CamelModel): name: str | None = None slug: str | None = None generation: int | None = None region: str | None = None box_art_url: str | None = None release_year: int | None = None color: str | None = None class RouteCreate(CamelModel): name: str order: int parent_route_id: int | None = None class RouteUpdate(CamelModel): name: str | None = None order: int | None = None parent_route_id: int | None = None class RouteReorderItem(CamelModel): id: int order: int class RouteReorderRequest(CamelModel): routes: list[RouteReorderItem]