from fooder.context import Context from fooder.controller.base import ModelController from fooder.domain import Meal from fooder.model.meal import MealCreateModel, MealUpdateModel class MealController(ModelController[Meal]): @classmethod async def create( cls, ctx: Context, diary_id: int, data: MealCreateModel ) -> "MealController": order = ( data.order if data.order is not None else await ctx.repo.meal.next_order(diary_id) ) obj = Meal(name=data.name, order=order, diary_id=diary_id) await ctx.repo.meal.create(obj) return cls(ctx, obj) async def update(self, data: MealUpdateModel) -> None: if data.name is not None: self.obj.name = data.name if data.order is not None: self.obj.order = data.order await self.ctx.repo.meal.update(self.obj)