Merges the run dashboard into the encounters page as a unified view at /runs/:runId, adds encounter method grouping in the modal and badges on route rows, improves the home page with recent runs, adds mobile hamburger nav, and polishes empty states. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
74 lines
1.4 KiB
Python
74 lines
1.4 KiB
Python
from app.schemas.base import CamelModel
|
|
|
|
|
|
class RouteResponse(CamelModel):
|
|
id: int
|
|
name: str
|
|
game_id: int
|
|
order: int
|
|
parent_route_id: int | None = None
|
|
encounter_methods: list[str] = []
|
|
|
|
|
|
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]
|