Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/households/controller_mealplan_rules.py: 100%

37 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 17:29 +0000

1from functools import cached_property 1a

2 

3from fastapi import Depends 1a

4from pydantic import UUID4 1a

5 

6from mealie.routes._base.base_controllers import BaseUserController 1a

7from mealie.routes._base.controller import controller 1a

8from mealie.routes._base.mixins import HttpRepo 1a

9from mealie.routes._base.routers import UserAPIRouter 1a

10from mealie.schema import mapper 1a

11from mealie.schema.meal_plan.plan_rules import PlanRulesCreate, PlanRulesOut, PlanRulesPagination, PlanRulesSave 1a

12from mealie.schema.response.pagination import PaginationQuery 1a

13 

14router = UserAPIRouter(prefix="/households/mealplans/rules", tags=["Households: Mealplan Rules"]) 1a

15 

16 

17@controller(router) 1a

18class GroupMealplanConfigController(BaseUserController): 1a

19 @cached_property 1a

20 def repo(self): 1a

21 return self.repos.group_meal_plan_rules 1fxgshijkltycuvmzABnqorwdCpDeEFGHb

22 

23 @cached_property 1a

24 def mixins(self): 1a

25 return HttpRepo[PlanRulesCreate, PlanRulesOut, PlanRulesOut](self.repo, self.logger) 1fgshijkltycuvmzBnqorwdpeEFb

26 

27 @router.get("", response_model=PlanRulesPagination) 1a

28 def get_all(self, q: PaginationQuery = Depends(PaginationQuery)): 1a

29 response = self.repo.page_all( 1fxgshijkltcuvmAnowdCpDeGHb

30 pagination=q, 

31 override=PlanRulesOut, 

32 ) 

33 

34 response.set_pagination_guides(router.url_path_for("get_all"), q.model_dump()) 1fxghijklcmAnodCpDeGHb

35 return response 1fxghijklcmAnodCpDeGHb

36 

37 @router.post("", response_model=PlanRulesOut, status_code=201) 1a

38 def create_one(self, data: PlanRulesCreate): 1a

39 save = mapper.cast(data, PlanRulesSave, group_id=self.group.id, household_id=self.household.id) 1fgshijkltycuvmzBnqorwdpeEFb

40 return self.mixins.create_one(save) 1fgshijkltycuvmzBnqorwdpeEFb

41 

42 @router.get("/{item_id}", response_model=PlanRulesOut) 1a

43 def get_one(self, item_id: UUID4): 1a

44 return self.mixins.get_one(item_id) 1qrdb

45 

46 @router.put("/{item_id}", response_model=PlanRulesOut) 1a

47 def update_one(self, item_id: UUID4, data: PlanRulesCreate): 1a

48 return self.mixins.update_one(data, item_id) 

49 

50 @router.delete("/{item_id}", response_model=PlanRulesOut) 1a

51 def delete_one(self, item_id: UUID4): 1a

52 return self.mixins.delete_one(item_id) # type: ignore 1cqreb