Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/explore/controller_public_foods.py: 62%
24 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from fastapi import APIRouter, Depends, HTTPException
2from pydantic import UUID4
4from mealie.routes._base import controller
5from mealie.routes._base.base_controllers import BasePublicGroupExploreController
6from mealie.schema.make_dependable import make_dependable
7from mealie.schema.recipe.recipe_ingredient import IngredientFood
8from mealie.schema.response.pagination import PaginationBase, PaginationQuery
10router = APIRouter(prefix="/foods")
13@controller(router)
14class PublicFoodsController(BasePublicGroupExploreController):
15 @property
16 def ingredient_foods(self):
17 return self.repos.ingredient_foods
19 @router.get("", response_model=PaginationBase[IngredientFood])
20 def get_all(
21 self,
22 q: PaginationQuery = Depends(make_dependable(PaginationQuery)),
23 search: str | None = None,
24 ) -> PaginationBase[IngredientFood]:
25 response = self.ingredient_foods.page_all(
26 pagination=q,
27 override=IngredientFood,
28 search=search,
29 )
31 response.set_pagination_guides(self.get_explore_url_path(router.url_path_for("get_all")), q.model_dump())
32 return response
34 @router.get("/{item_id}", response_model=IngredientFood)
35 def get_one(self, item_id: UUID4) -> IngredientFood:
36 item = self.ingredient_foods.get_one(item_id)
37 if not item:
38 raise HTTPException(404, "food not found")
40 return item