from fastapi import APIRouter, Query, Request
from fastapi.responses import Response
from openfoodfacts_proxy.core.application_container import ApplicationContainer
router = APIRouter()
@router.get("/facets/{facet_name}", response_model=None)
async def get_facet_values(
request: Request,
facet_name: str,
page: int = Query(1),
page_size: int = Query(20),
json: int | None = Query(None),
) -> Response:
"""Serve OFF facet value lists through the upstream proxy."""
del page, page_size, json
container = ApplicationContainer.from_app(request.app)
return await container.facet_products_handler.handle_values(request, facet_name=facet_name)
@router.get("/facets/{facet_name}/{facet_value}", response_model=None)
async def get_facet_products(
request: Request,
facet_name: str,
facet_value: str,
page: int = Query(1),
page_size: int = Query(25),
fields: str | None = Query(None),
sort_by: str | None = Query(None),
json: int | None = Query(None),
) -> Response:
"""Serve supported OFF facet product lookups locally and proxy the rest."""
del json
container = ApplicationContainer.from_app(request.app)
return await container.facet_products_handler.handle(
request,
facet_name=facet_name,
facet_value=facet_value,
page=page,
page_size=page_size,
fields=fields,
sort_by=sort_by,
)