2026-02-08 11:16:13 +01:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
from app.schemas.base import CamelModel
|
|
|
|
|
from app.schemas.pokemon import PokemonResponse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossPokemonResponse(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
pokemon_id: int
|
|
|
|
|
level: int
|
|
|
|
|
order: int
|
|
|
|
|
pokemon: PokemonResponse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossBattleResponse(CamelModel):
|
|
|
|
|
id: int
|
2026-02-08 12:07:42 +01:00
|
|
|
version_group_id: int
|
2026-02-08 11:16:13 +01:00
|
|
|
name: str
|
|
|
|
|
boss_type: str
|
|
|
|
|
badge_name: str | None
|
|
|
|
|
badge_image_url: str | None
|
|
|
|
|
level_cap: int
|
|
|
|
|
order: int
|
|
|
|
|
after_route_id: int | None
|
|
|
|
|
location: str
|
2026-02-08 14:55:26 +01:00
|
|
|
section: str | None
|
2026-02-08 11:16:13 +01:00
|
|
|
sprite_url: str | None
|
|
|
|
|
pokemon: list[BossPokemonResponse] = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossResultResponse(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
run_id: int
|
|
|
|
|
boss_battle_id: int
|
|
|
|
|
result: str
|
|
|
|
|
attempts: int
|
|
|
|
|
completed_at: datetime | None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# --- Input schemas ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossBattleCreate(CamelModel):
|
|
|
|
|
name: str
|
|
|
|
|
boss_type: str
|
|
|
|
|
badge_name: str | None = None
|
|
|
|
|
badge_image_url: str | None = None
|
|
|
|
|
level_cap: int
|
|
|
|
|
order: int
|
|
|
|
|
after_route_id: int | None = None
|
|
|
|
|
location: str
|
2026-02-08 14:55:26 +01:00
|
|
|
section: str | None = None
|
2026-02-08 11:16:13 +01:00
|
|
|
sprite_url: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossBattleUpdate(CamelModel):
|
|
|
|
|
name: str | None = None
|
|
|
|
|
boss_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
|
2026-02-08 14:55:26 +01:00
|
|
|
section: str | None = None
|
2026-02-08 11:16:13 +01:00
|
|
|
sprite_url: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossPokemonInput(CamelModel):
|
|
|
|
|
pokemon_id: int
|
|
|
|
|
level: int
|
|
|
|
|
order: int
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossResultCreate(CamelModel):
|
|
|
|
|
boss_battle_id: int
|
|
|
|
|
result: str
|
|
|
|
|
attempts: int = 1
|
|
|
|
|
|
|
|
|
|
|
2026-02-08 14:55:26 +01:00
|
|
|
class BossReorderItem(CamelModel):
|
|
|
|
|
id: int
|
|
|
|
|
order: int
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BossReorderRequest(CamelModel):
|
|
|
|
|
bosses: list[BossReorderItem]
|
|
|
|
|
|
|
|
|
|
|
2026-02-08 11:16:13 +01:00
|
|
|
class BossResultUpdate(CamelModel):
|
|
|
|
|
result: str | None = None
|
|
|
|
|
attempts: int | None = None
|