feat: add canonical spot URLs

This commit is contained in:
ik
2026-09-07 16:43:12 +07:00
parent 233c5887eb
commit 4e037eb7e8
8 changed files with 33 additions and 8 deletions
+13
View File
@@ -135,6 +135,19 @@ def _spot_or_404(db: Session, spot_id: UUID) -> Spot:
return spot
@app.get("/api/v1/spots/resolve", response_model=SpotOut)
def resolve_spot(
db: Db, waterbody: str, x: int = Query(ge=-10_000, le=10_000),
y: int = Query(ge=-10_000, le=10_000),
) -> SpotOut:
spot = db.scalar(select(Spot).options(joinedload(Spot.waterbody)).join(Spot.waterbody).where(
Waterbody.slug == waterbody, Spot.x == x, Spot.y == y,
))
if spot is None:
raise HTTPException(status_code=404, detail="spot not found")
return spot_detail(spot.id, db)
@app.get("/api/v1/spots/{spot_id}", response_model=SpotOut)
def spot_detail(spot_id: UUID, db: Db) -> SpotOut:
spot = _spot_or_404(db, spot_id)