fooder-api/fooder/command/save_meal_as_preset.py

19 lines
670 B
Python

from fooder.context import Context
from fooder.controller.preset import PresetController
from fooder.domain import Meal, Preset, PresetEntry
async def save_meal_as_preset(
ctx: Context, meal: Meal, name: str | None = None
) -> Preset:
await ctx.repo.meal.session.refresh(meal)
ctrl = await PresetController.create(ctx, name=name or meal.name)
for entry in meal.entries:
preset_entry = PresetEntry(
grams=entry.grams,
product_id=entry.product_id,
preset_id=ctrl.obj.id,
)
await ctx.repo.preset_entry.create(preset_entry)
await ctx.repo.preset.session.refresh(ctrl.obj)
return ctrl.obj