schemas.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from enum import Enum
  2. from typing import Union, List
  3. from fastapi_camelcase import CamelModel
  4. from pydantic import conint, confloat, constr
  5. CountryCode = constr(to_lower=True, min_length=2, max_length=2)
  6. class GenMethodEnum(str, Enum):
  7. rsv = "RANDOMSTREETVIEW"
  8. urban = "URBAN"
  9. class GameModeEnum(str, Enum):
  10. normal = "NORMAL"
  11. frozen = "FROZEN"
  12. class ClockModeEnum(str, Enum):
  13. normal = "NORMAL"
  14. race = "RACE"
  15. time_bank = "TIMEBANK"
  16. class ScoreMethodEnum(str, Enum):
  17. distance = "DISTANCE"
  18. country_race = "COUNTRYRACE"
  19. hard = "HARD"
  20. nightmare = "NIGHTMARE"
  21. class GameConfig(CamelModel):
  22. timer: conint(gt=0)
  23. rounds: conint(gt=0)
  24. country_lock: Union[CountryCode, None] = None
  25. generation_method: GenMethodEnum = GenMethodEnum.rsv
  26. game_mode: GameModeEnum = GameModeEnum.normal
  27. clock_mode: ClockModeEnum = ClockModeEnum.normal
  28. score_method: ScoreMethodEnum = ScoreMethodEnum.distance
  29. round_point_cap: Union[int, None] = None
  30. class Config:
  31. orm_mode = True
  32. class Guess(CamelModel):
  33. lat: confloat(ge=-90.0, le=90.0)
  34. lng: confloat(ge=-180.0, le=180.0)
  35. time_remaining: int
  36. class CacheInfo(CamelModel):
  37. cache_name: str
  38. size: int
  39. class GeneratorInfo(CamelModel):
  40. generation_method: GenMethodEnum
  41. country_locks: List[CountryCode]