Files
nuzlocke-tracker/backend/src/app/schemas/encounter.py
Julian Tabel 46f246028f Add randomize encounters feature (per-route + bulk)
Per-route: Randomize/Re-roll button in EncounterModal picks a uniform
random pokemon from eligible (non-duped) encounters. Bulk: new
POST /runs/{run_id}/encounters/bulk-randomize endpoint fills all
remaining routes in order, respecting dupes clause cascading, pinwheel
zones, and route group locking. Frontend Randomize All button on the
run page triggers the bulk endpoint with a confirm dialog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:14:43 +01:00

49 lines
1.1 KiB
Python

from datetime import datetime
from app.schemas.base import CamelModel
from app.schemas.game import RouteResponse
from app.schemas.pokemon import PokemonResponse
class EncounterCreate(CamelModel):
route_id: int
pokemon_id: int
nickname: str | None = None
status: str
catch_level: int | None = None
is_shiny: bool = False
class EncounterUpdate(CamelModel):
nickname: str | None = None
status: str | None = None
faint_level: int | None = None
death_cause: str | None = None
current_pokemon_id: int | None = None
class EncounterResponse(CamelModel):
id: int
run_id: int
route_id: int
pokemon_id: int
current_pokemon_id: int | None
nickname: str | None
status: str
catch_level: int | None
faint_level: int | None
death_cause: str | None
is_shiny: bool
caught_at: datetime
class EncounterDetailResponse(EncounterResponse):
pokemon: PokemonResponse
current_pokemon: PokemonResponse | None
route: RouteResponse
class BulkRandomizeResponse(CamelModel):
created: list[EncounterResponse]
skipped_routes: int