from fooder.context import Context from fooder.controller.base import ModelController from fooder.domain import Entry from fooder.model.entry import EntryCreateModel, EntryUpdateModel class EntryController(ModelController[Entry]): @classmethod async def create( cls, ctx: Context, meal_id: int, data: EntryCreateModel ) -> "EntryController": obj = Entry(grams=data.grams, product_id=data.product_id, meal_id=meal_id) 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)