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.10.6, created at 2025-11-25 17:29 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 17:29 +0000
1from fastapi import APIRouter, Depends, HTTPException 1a
2from pydantic import UUID4 1a
4from mealie.routes._base import controller 1a
5from mealie.routes._base.base_controllers import BasePublicGroupExploreController 1a
6from mealie.schema.make_dependable import make_dependable 1a
7from mealie.schema.recipe.recipe_ingredient import IngredientFood 1a
8from mealie.schema.response.pagination import PaginationBase, PaginationQuery 1a
10router = APIRouter(prefix="/foods") 1a
13@controller(router) 1a
14class PublicFoodsController(BasePublicGroupExploreController): 1a
15 @property 1a
16 def ingredient_foods(self): 1a
17 return self.repos.ingredient_foods
19 @router.get("", response_model=PaginationBase[IngredientFood]) 1a
20 def get_all( 1a
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) 1a
35 def get_one(self, item_id: UUID4) -> IngredientFood: 1a
36 item = self.ingredient_foods.get_one(item_id)
37 if not item:
38 raise HTTPException(404, "food not found")
40 return item