2026-02-05 15:09:05 +01:00
|
|
|
from app.schemas.base import CamelModel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteResponse(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
name: str
|
|
|
|
|
game_id: int
|
|
|
|
|
order: int
|
2026-02-06 11:07:45 +01:00
|
|
|
parent_route_id: int | None = None
|
2026-02-07 20:22:36 +01:00
|
|
|
pinwheel_zone: int | None = None
|
2026-02-07 14:20:26 +01:00
|
|
|
encounter_methods: list[str] = []
|
2026-02-05 15:09:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class GameResponse(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
name: str
|
|
|
|
|
slug: str
|
|
|
|
|
generation: int
|
|
|
|
|
region: str
|
|
|
|
|
box_art_url: str | None
|
|
|
|
|
release_year: int | None
|
2026-02-06 11:46:10 +01:00
|
|
|
color: str | None
|
2026-02-05 15:09:05 +01:00
|
|
|
|
|
|
|
|
|
2026-02-06 11:07:45 +01:00
|
|
|
class RouteWithChildrenResponse(RouteResponse):
|
|
|
|
|
children: list[RouteResponse] = []
|
|
|
|
|
|
|
|
|
|
|
2026-02-05 15:09:05 +01:00
|
|
|
class GameDetailResponse(GameResponse):
|
|
|
|
|
routes: list[RouteResponse] = []
|
2026-02-05 18:36:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# --- Admin schemas ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GameCreate(CamelModel):
|
|
|
|
|
name: str
|
|
|
|
|
slug: str
|
|
|
|
|
generation: int
|
|
|
|
|
region: str
|
|
|
|
|
box_art_url: str | None = None
|
|
|
|
|
release_year: int | None = None
|
2026-02-06 11:46:10 +01:00
|
|
|
color: str | None = None
|
2026-02-05 18:36:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
2026-02-06 11:46:10 +01:00
|
|
|
color: str | None = None
|
2026-02-05 18:36:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteCreate(CamelModel):
|
|
|
|
|
name: str
|
|
|
|
|
order: int
|
2026-02-06 11:07:45 +01:00
|
|
|
parent_route_id: int | None = None
|
2026-02-07 20:22:36 +01:00
|
|
|
pinwheel_zone: int | None = None
|
2026-02-05 18:36:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteUpdate(CamelModel):
|
|
|
|
|
name: str | None = None
|
|
|
|
|
order: int | None = None
|
2026-02-06 11:07:45 +01:00
|
|
|
parent_route_id: int | None = None
|
2026-02-07 20:22:36 +01:00
|
|
|
pinwheel_zone: int | None = None
|
2026-02-05 18:36:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteReorderItem(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
order: int
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteReorderRequest(CamelModel):
|
|
|
|
|
routes: list[RouteReorderItem]
|