"""Foods router (spec §3.1). Thin: validate → service → schema (spec §8.1 rule 2).""" from fastapi import APIRouter, Depends, Query from sqlalchemy import select from sqlalchemy.orm import Session from database import get_db from models import Food from schemas import FoodRead router = APIRouter(prefix="/api/foods", tags=["foods"]) @router.get("", response_model=list[FoodRead]) def list_foods( q: str | None = None, limit: int = Query(default=50, le=200), offset: int = 0, db: Session = Depends(get_db), ): """Search local foods. Soft-deleted foods are hidden (spec §8.1 rule 7).""" stmt = select(Food).where(Food.deleted_at.is_(None)).limit(limit).offset(offset) if q: stmt = stmt.where(Food.name.contains(q) | Food.brand.contains(q)) return db.scalars(stmt).all()