fooder-api/fooder/command/load_preset_as_meal.py

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