from fooder.context import Context from fooder.controller.entry import EntryController from fooder.controller.meal import MealController from fooder.domain import Meal, Preset from fooder.model.entry import EntryCreateModel from fooder.model.meal import MealCreateModel async def load_preset_as_meal( ctx: Context, preset: Preset, diary_id: int, name: str | None = None ) -> Meal: meal_ctrl = await MealController.create( ctx, diary_id=diary_id, data=MealCreateModel(name=name or preset.name) ) for entry in preset.entries: await EntryController.create( ctx, meal=meal_ctrl.obj, data=EntryCreateModel(grams=entry.grams, product_id=entry.product_id), ) await ctx.repo.meal.session.refresh(meal_ctrl.obj) return meal_ctrl.obj