Add hierarchical route grouping for multi-area locations
Locations like Mt. Moon (with 1F, B1F, B2F floors) are now grouped so only one encounter can be logged per location group, enforcing Nuzlocke first-encounter rules correctly. - Add parent_route_id column with self-referential FK to routes table - Add parent/children relationships on Route model - Update games API to return hierarchical route structure - Add validation in encounters API to prevent parent route encounters and duplicate encounters within sibling routes (409 conflict) - Update frontend with collapsible RouteGroup component - Auto-derive route groups from PokeAPI location/location-area structure - Regenerate seed data with 70 parent routes and 315 child routes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ class RouteResponse(CamelModel):
|
||||
name: str
|
||||
game_id: int
|
||||
order: int
|
||||
parent_route_id: int | None = None
|
||||
|
||||
|
||||
class GameResponse(CamelModel):
|
||||
@@ -18,6 +19,10 @@ class GameResponse(CamelModel):
|
||||
release_year: int | None
|
||||
|
||||
|
||||
class RouteWithChildrenResponse(RouteResponse):
|
||||
children: list[RouteResponse] = []
|
||||
|
||||
|
||||
class GameDetailResponse(GameResponse):
|
||||
routes: list[RouteResponse] = []
|
||||
|
||||
@@ -46,11 +51,13 @@ class GameUpdate(CamelModel):
|
||||
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):
|
||||
|
||||
Reference in New Issue
Block a user