Coverage for opt/mealie/lib/python3.12/site-packages/mealie/repos/repository_foods.py: 40%

20 statements  

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

1from pydantic import UUID4 1a

2from sqlalchemy import select 1a

3 

4from mealie.db.models.recipe.ingredient import IngredientFoodModel 1a

5from mealie.schema.recipe.recipe_ingredient import IngredientFood 1a

6 

7from .repository_generic import GroupRepositoryGeneric 1a

8 

9 

10class RepositoryFood(GroupRepositoryGeneric[IngredientFood, IngredientFoodModel]): 1a

11 def _get_food(self, id: UUID4) -> IngredientFoodModel: 1a

12 stmt = select(self.model).filter_by(**self._filter_builder(**{"id": id})) 

13 return self.session.execute(stmt).scalars().one() 

14 

15 def merge(self, from_food: UUID4, to_food: UUID4) -> IngredientFood | None: 1a

16 from_model = self._get_food(from_food) 

17 to_model = self._get_food(to_food) 

18 

19 to_model.ingredients += from_model.ingredients 

20 

21 try: 

22 self.session.delete(from_model) 

23 self.session.commit() 

24 except Exception as e: 

25 self.session.rollback() 

26 raise e 

27 

28 return self.get_one(to_food)