79 lines
1.2 KiB
Python
79 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel as PydanticBaseModel
|
|
|
|
from hopper.enums import PlayerState
|
|
|
|
|
|
class BaseModel(PydanticBaseModel):
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
class PingResponse(BaseModel):
|
|
message: str
|
|
|
|
|
|
class BoardDto(BaseModel):
|
|
width: int
|
|
height: int
|
|
|
|
|
|
class PositionDto(BaseModel):
|
|
x: int
|
|
y: int
|
|
|
|
|
|
class PlayerDto(BaseModel):
|
|
id: str
|
|
name: str
|
|
active: bool
|
|
position: PositionDto
|
|
move_count: int
|
|
move_attempt_count: int
|
|
state: PlayerState
|
|
|
|
|
|
class DestinationDto(BaseModel):
|
|
position: PositionDto
|
|
|
|
|
|
class ProductDto(BaseModel):
|
|
name: str
|
|
id: str
|
|
description: Optional[str] = None
|
|
|
|
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
|
|
|
|
|
|
class GetProductsResponse(BaseModel):
|
|
products: list[ProductDto]
|
|
|
|
|
|
class PurchaseProductDto(BaseModel):
|
|
product_id: str
|