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 15:32 +0000

1from fastapi import APIRouter, Depends, HTTPException 1a

2from pydantic import UUID4 1a

3 

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

9 

10router = APIRouter(prefix="/foods") 1a

11 

12 

13@controller(router) 1a

14class PublicFoodsController(BasePublicGroupExploreController): 1a

15 @property 1a

16 def ingredient_foods(self): 1a

17 return self.repos.ingredient_foods 

18 

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 ) 

30 

31 response.set_pagination_guides(self.get_explore_url_path(router.url_path_for("get_all")), q.model_dump()) 

32 return response 

33 

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") 

39 

40 return item