Files
fairhopper/hopper/api/dto.py
2023-03-25 13:21:07 +01:00

74 lines
1.3 KiB
Python

from __future__ import annotations
from pydantic import BaseModel as PydanticBaseModel
from hopper.models.board import GameBoard
from hopper.models.player import Player, Position
class BaseModel(PydanticBaseModel):
class Config:
orm_mode = True
class PingResponse(BaseModel):
message: str
class BoardDto(BaseModel):
width: int
height: int
@staticmethod
def from_model(board: GameBoard) -> BoardDto:
return BoardDto.from_orm(board)
class PositionDto(BaseModel):
x: int
y: int
@staticmethod
def from_model(position: Position) -> PositionDto:
return PositionDto.from_orm(position)
class PlayerDto(BaseModel):
uuid: str
position: PositionDto
move_count: int
move_attempt_count: int
@staticmethod
def from_model(player: Player) -> PlayerDto:
return PlayerDto.from_orm(player)
class DestinationDto(BaseModel):
position: PositionDto
class StartGameRequestDto(BaseModel):
player_name: str
class GameInfoDto(BaseModel):
board: BoardDto
destination: DestinationDto
class StartGameResponseDto(GameInfoDto):
player: PlayerDto
class MovePlayerResponseDto(BaseModel):
player: PlayerDto
class PlayerInfoResponseDto(MovePlayerResponseDto):
...
class ErrorResponseDto(BaseModel):
detail: str