"""Library browsing and Stats API (read-only over analysis results).""" from __future__ import annotations from fastapi import APIRouter, Query, Request from photo_pipeline.services.library import LibraryService router = APIRouter(tags=["library"]) _FILTER_KEYS = ("setting", "tod", "season", "status", "people", "year_min", "year_max", "has_location", "album") def _service(request: Request) -> LibraryService: return LibraryService(request.app.state.session_factory) @router.get("/library/assets") def search( request: Request, q: str = "", sort: str = "path", limit: int = Query(60, ge=1, le=200), offset: int = Query(0, ge=0), ) -> dict: filters = {key: value for key, value in request.query_params.items() if key in _FILTER_KEYS} return _service(request).search(q=q, filters=filters, sort=sort, offset=offset, limit=limit) @router.get("/library/facets") def facets(request: Request) -> dict: return _service(request).facets() @router.get("/library/stats") def stats(request: Request) -> dict: return _service(request).stats()