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:32 +0000
« 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
4from mealie.db.models.recipe.ingredient import IngredientUnitModel 1a
5from mealie.schema.recipe.recipe_ingredient import IngredientUnit 1a
7from .repository_generic import GroupRepositoryGeneric 1a
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()
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)
19 to_model.ingredients += from_model.ingredients
21 try:
22 self.session.delete(from_model)
23 self.session.commit()
24 except Exception as e:
25 self.session.rollback()
26 raise e
28 return self.get_one(to_unit)