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

20 statements  

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

1from pydantic import UUID4 1a

2from sqlalchemy import select 1a

3 

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

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

6 

7from .repository_generic import GroupRepositoryGeneric 1a

8 

9 

10class RepositoryUnit(GroupRepositoryGeneric[IngredientUnit, IngredientUnitModel]): 1a

11 def _get_unit(self, id: UUID4) -> IngredientUnitModel: 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_unit: UUID4, to_unit: UUID4) -> IngredientUnit | None: 1a

16 from_model = self._get_unit(from_unit) 

17 to_model = self._get_unit(to_unit) 

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