other.py 986 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from typing import List
  2. from fastapi import APIRouter
  3. from fastapi_camelcase import CamelModel
  4. from pydantic import confloat
  5. from .. import scoring
  6. from ..schemas import CacheInfo
  7. from ..gen import get_cache_info
  8. router = APIRouter()
  9. class Point(CamelModel):
  10. lat: confloat(ge=-90.0, le=90.0)
  11. lng: confloat(ge=-180.0, le=180.0)
  12. class ScoreCheck(CamelModel):
  13. point1: Point
  14. point2: Point
  15. class Score(CamelModel):
  16. distance: float
  17. score: int
  18. class CacheResponse(CamelModel):
  19. caches: List[CacheInfo]
  20. @router.get("/")
  21. def health():
  22. return { "status": "healthy", "version": "2.0" }
  23. @router.post("/score", response_model=Score)
  24. def check_score(points: ScoreCheck):
  25. score, distance = scoring.score((points.point1.lat, points.point1.lng), (points.point2.lat, points.point2.lng))
  26. return Score(distance=distance, score=score)
  27. @router.get("/caches", response_model=CacheResponse)
  28. def caches():
  29. return CacheResponse(caches=get_cache_info())