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 origin: str | None = None 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 origin: str | None caught_at: datetime class EncounterDetailResponse(EncounterResponse): pokemon: PokemonResponse current_pokemon: PokemonResponse | None route: RouteResponse class BulkRandomizeResponse(CamelModel): created: list[EncounterResponse] skipped_routes: int