38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import datetime
|
|
|
|
from fooder.context import Context
|
|
from fooder.controller.base import ModelController
|
|
from fooder.domain import Diary
|
|
from fooder.domain.user_settings import UserSettings
|
|
from fooder.model.diary import DiaryUpdateModel
|
|
|
|
|
|
class DiaryController(ModelController[Diary]):
|
|
@classmethod
|
|
async def create(
|
|
cls, ctx: Context, date: datetime.date, settings: UserSettings
|
|
) -> "DiaryController":
|
|
obj = Diary(
|
|
user_id=ctx.user.id,
|
|
date=date,
|
|
protein_goal=settings.protein_goal,
|
|
carb_goal=settings.carb_goal,
|
|
fat_goal=settings.fat_goal,
|
|
fiber_goal=settings.fiber_goal,
|
|
calories_goal=settings.calories_goal,
|
|
)
|
|
await ctx.repo.diary.create(obj)
|
|
return cls(ctx, obj)
|
|
|
|
async def update(self, data: DiaryUpdateModel) -> None:
|
|
if data.protein_goal is not None:
|
|
self.obj.protein_goal = data.protein_goal
|
|
if data.carb_goal is not None:
|
|
self.obj.carb_goal = data.carb_goal
|
|
if data.fat_goal is not None:
|
|
self.obj.fat_goal = data.fat_goal
|
|
if data.fiber_goal is not None:
|
|
self.obj.fiber_goal = data.fiber_goal
|
|
if data.calories_goal is not None:
|
|
self.obj.calories_goal = data.calories_goal
|
|
await self.ctx.repo.diary.update(self.obj)
|