mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-15 14:55:21 -05:00
* Remove some implicit lazy-loads from user serialization * implement full backup restore across different database versions * rework all custom getter dicts to not leak lazy loads * remove some occurances of lazy-loading * remove a lot of lazy loading from recipes * add more eager loading remove loading options from repository remove raiseload for checking * fix failing test * do not apply loader options for paging counts * try using selectinload a bit more instead of joinedload * linter fixes
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
from pydantic import UUID4
|
|
from sqlalchemy import select
|
|
|
|
from mealie.db.models.recipe.ingredient import IngredientFoodModel
|
|
from mealie.schema.recipe.recipe_ingredient import IngredientFood
|
|
|
|
from .repository_generic import RepositoryGeneric
|
|
|
|
|
|
class RepositoryFood(RepositoryGeneric[IngredientFood, IngredientFoodModel]):
|
|
def _get_food(self, id: UUID4) -> IngredientFoodModel:
|
|
stmt = select(self.model).filter_by(**self._filter_builder(**{"id": id}))
|
|
return self.session.execute(stmt).scalars().one()
|
|
|
|
def merge(self, from_food: UUID4, to_food: UUID4) -> IngredientFood | None:
|
|
from_model = self._get_food(from_food)
|
|
to_model = self._get_food(to_food)
|
|
|
|
to_model.ingredients += from_model.ingredients
|
|
|
|
try:
|
|
self.session.delete(from_model)
|
|
self.session.commit()
|
|
except Exception as e:
|
|
self.session.rollback()
|
|
raise e
|
|
|
|
return self.get_one(to_food)
|
|
|
|
def by_group(self, group_id: UUID4) -> "RepositoryFood":
|
|
return super().by_group(group_id)
|