Project rename and restructure
This commit is contained in:
73
hopper/api/dto.py
Normal file
73
hopper/api/dto.py
Normal file
@ -0,0 +1,73 @@
|
||||
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
|
||||
Reference in New Issue
Block a user