from fooder.context import Context from fooder.controller.base import ModelController from fooder.domain import Entry from fooder.domain.meal import Meal from fooder.model.entry import EntryCreateModel, EntryUpdateModel class EntryController(ModelController[Entry]): @classmethod async def create( cls, ctx: Context, meal: Meal, data: EntryCreateModel ) -> "EntryController": obj = Entry(grams=data.grams, product_id=data.product_id) obj.meal = meal await ctx.repo.entry.create(obj) return cls(ctx, obj) async def update(self, data: EntryUpdateModel) -> None: if data.grams is not None: self.obj.grams = data.grams await self.ctx.repo.entry.update(self.obj)