PawTrace / backend /app /api /geo.py
Elliott Duke
PawTrace read-only demo: reid model + 1000-dog haystack
b5442b0
Raw
History Blame Contribute Delete
1.07 kB
from __future__ import annotations
from fastapi import APIRouter, Depends
from sqlalchemy import func, select
from sqlalchemy.orm import Session
from ..config import settings
from ..db import get_db
from ..models import UnknownDog
from ..models.base import UnknownDogStatus
from .shelters import nearby_shelters
router = APIRouter(tags=["geo"])
@router.get("/geo/nearby-shelters")
def get_nearby_shelters(zip: str | None = None) -> dict:
return {"zip": zip, "shelters": nearby_shelters(zip)}
@router.get("/healthz")
def healthz() -> dict:
return {"status": "ok"}
@router.get("/config")
def public_config(db: Session = Depends(get_db)) -> dict:
"""Public runtime config the frontend reads on load: which UI to render, and how many
found/unclaimed dogs a photo search is compared against (the searchable haystack size)."""
haystack_size = db.execute(
select(func.count(UnknownDog.id)).where(UnknownDog.status == UnknownDogStatus.pending)
).scalar()
return {"demo_mode": settings.demo_mode, "haystack_size": haystack_size}