Files
nuzlocke-tracker/backend/src/app/schemas/boss.py

145 lines
3.1 KiB
Python
Raw Normal View History

from datetime import datetime
from app.schemas.base import CamelModel
from app.schemas.pokemon import PokemonResponse
class MoveRef(CamelModel):
id: int
name: str
class AbilityRef(CamelModel):
id: int
name: str
class BossPokemonResponse(CamelModel):
id: int
pokemon_id: int
level: int
order: int
condition_label: str | None
pokemon: PokemonResponse
# Detail fields
ability_id: int | None = None
ability: AbilityRef | None = None
held_item: str | None = None
nature: str | None = None
move1_id: int | None = None
move2_id: int | None = None
move3_id: int | None = None
move4_id: int | None = None
move1: MoveRef | None = None
move2: MoveRef | None = None
move3: MoveRef | None = None
move4: MoveRef | None = None
class BossBattleResponse(CamelModel):
id: int
version_group_id: int
name: str
boss_type: str
specialty_type: str | None
badge_name: str | None
badge_image_url: str | None
level_cap: int
order: int
after_route_id: int | None
location: str
section: str | None
sprite_url: str | None
game_id: int | None
pokemon: list[BossPokemonResponse] = []
class BossResultTeamMemberResponse(CamelModel):
id: int
encounter_id: int
level: int
class BossResultResponse(CamelModel):
id: int
run_id: int
boss_battle_id: int
result: str
attempts: int
completed_at: datetime | None
team: list[BossResultTeamMemberResponse] = []
# --- Input schemas ---
class BossBattleCreate(CamelModel):
name: str
boss_type: str
specialty_type: str | None = None
badge_name: str | None = None
badge_image_url: str | None = None
level_cap: int
order: int
after_route_id: int | None = None
location: str
section: str | None = None
sprite_url: str | None = None
game_id: int | None = None
class BossBattleUpdate(CamelModel):
name: str | None = None
boss_type: str | None = None
specialty_type: str | None = None
badge_name: str | None = None
badge_image_url: str | None = None
level_cap: int | None = None
order: int | None = None
after_route_id: int | None = None
location: str | None = None
section: str | None = None
sprite_url: str | None = None
game_id: int | None = None
class BossPokemonInput(CamelModel):
pokemon_id: int
level: int
order: int
condition_label: str | None = None
# Detail fields
ability_id: int | None = None
held_item: str | None = None
nature: str | None = None
move1_id: int | None = None
move2_id: int | None = None
move3_id: int | None = None
move4_id: int | None = None
class BossResultTeamMemberInput(CamelModel):
encounter_id: int
level: int
class BossResultCreate(CamelModel):
boss_battle_id: int
result: str
attempts: int = 1
team: list[BossResultTeamMemberInput] = []
class BossReorderItem(CamelModel):
id: int
order: int
class BossReorderRequest(CamelModel):
bosses: list[BossReorderItem]
class BossResultUpdate(CamelModel):
result: str | None = None
attempts: int | None = None