feat(family): deploy Single-Writer DuckDB backend, Mila parent cockpit & feeding analytics, and Moritz macro tracker
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from typing import Any, Dict, List, Optional
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query, Request
|
||||
|
||||
from app.engine import DuckDBEngine
|
||||
from app.models import EntityPutRequest
|
||||
|
||||
router = APIRouter(tags=["Entities"])
|
||||
|
||||
|
||||
def get_engine(request: Request) -> DuckDBEngine:
|
||||
return request.app.state.engine
|
||||
|
||||
|
||||
@router.post("/entities")
|
||||
async def put_entity(
|
||||
req: EntityPutRequest,
|
||||
engine: DuckDBEngine = Depends(get_engine),
|
||||
) -> Dict[str, Any]:
|
||||
try:
|
||||
return engine.put_entity(req)
|
||||
except ValueError as ve:
|
||||
raise HTTPException(status_code=400, detail=str(ve))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/entities/{collection}")
|
||||
async def list_entities(
|
||||
collection: str,
|
||||
engine: DuckDBEngine = Depends(get_engine),
|
||||
) -> List[Dict[str, Any]]:
|
||||
try:
|
||||
return engine.list_entities(collection=collection)
|
||||
except ValueError as ve:
|
||||
raise HTTPException(status_code=400, detail=str(ve))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/places/near")
|
||||
async def find_places_near(
|
||||
lat: float = Query(..., description="Latitude"),
|
||||
lon: float = Query(..., description="Longitude"),
|
||||
radius_m: float = Query(default=1000.0, description="Radius in meters"),
|
||||
category: Optional[str] = Query(default=None, description="Category filter"),
|
||||
engine: DuckDBEngine = Depends(get_engine),
|
||||
) -> List[Dict[str, Any]]:
|
||||
try:
|
||||
return engine.find_places_near(lat=lat, lon=lon, radius_m=radius_m, category=category)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
Reference in New Issue
Block a user