22 lines
810 B
Python
22 lines
810 B
Python
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
|