from fooder.context import Context from fooder.controller.base import ModelController from fooder.domain import PresetEntry from fooder.domain.preset import Preset from fooder.model.entry import EntryCreateModel, EntryUpdateModel class PresetEntryController(ModelController[PresetEntry]): @classmethod async def create( cls, ctx: Context, preset: Preset, data: EntryCreateModel ) -> "PresetEntryController": obj = PresetEntry(grams=data.grams, product_id=data.product_id) obj.preset = preset await ctx.repo.preset_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.preset_entry.update(self.obj)