Add user authentication with login/signup/protected routes, boss pokemon detail fields and result team tracking, moves and abilities selector components and API, run ownership and visibility controls, and various UI improvements across encounters, run list, and journal pages. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
from app.models.nuzlocke_run import RunVisibility
|
|
from app.schemas.base import CamelModel
|
|
from app.schemas.encounter import EncounterDetailResponse
|
|
from app.schemas.game import GameResponse
|
|
|
|
|
|
class OwnerResponse(CamelModel):
|
|
id: UUID
|
|
display_name: str | None = None
|
|
|
|
|
|
class RunCreate(CamelModel):
|
|
game_id: int
|
|
name: str
|
|
rules: dict = {}
|
|
naming_scheme: str | None = None
|
|
visibility: RunVisibility = RunVisibility.PUBLIC
|
|
|
|
|
|
class RunUpdate(CamelModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
rules: dict | None = None
|
|
hof_encounter_ids: list[int] | None = None
|
|
naming_scheme: str | None = None
|
|
visibility: RunVisibility | None = None
|
|
|
|
|
|
class RunResponse(CamelModel):
|
|
id: int
|
|
game_id: int
|
|
name: str
|
|
status: str
|
|
rules: dict
|
|
hof_encounter_ids: list[int] | None = None
|
|
naming_scheme: str | None = None
|
|
visibility: RunVisibility
|
|
owner: OwnerResponse | None = None
|
|
started_at: datetime
|
|
completed_at: datetime | None
|
|
|
|
|
|
class RunGenlockeContext(CamelModel):
|
|
genlocke_id: int
|
|
genlocke_name: str
|
|
leg_order: int
|
|
total_legs: int
|
|
is_final_leg: bool
|
|
retired_pokemon_ids: list[int] = []
|
|
|
|
|
|
class RunDetailResponse(RunResponse):
|
|
game: GameResponse
|
|
encounters: list[EncounterDetailResponse] = []
|
|
genlocke: RunGenlockeContext | None = None
|
|
transfer_encounter_ids: list[int] = []
|