From 57e1732ef1fc5b386db84409ca6ccf3fcb387624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Doma=C5=84ski?= Date: Tue, 7 Apr 2026 17:39:39 +0200 Subject: [PATCH] [models] simplify calories and macros' --- fooder/model/base.py | 4 +--- fooder/model/product.py | 36 +++++++++++++++++------------------ fooder/model/user_settings.py | 20 +++++++++---------- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/fooder/model/base.py b/fooder/model/base.py index 4ec948f..fedf3d0 100644 --- a/fooder/model/base.py +++ b/fooder/model/base.py @@ -2,10 +2,8 @@ from typing import Annotated from pydantic import ConfigDict, Field -Macronutrient = Annotated[float, Field(ge=0, le=100)] -OptionalMacronutrient = Annotated[float | None, Field(default=None, ge=0, le=100)] +Macronutrient = Annotated[float, Field(ge=0)] Calories = Annotated[float, Field(ge=0)] -OptionalCalories = Annotated[float | None, Field(default=None, ge=0)] class ObjModelMixin: diff --git a/fooder/model/product.py b/fooder/model/product.py index ee1f0ab..a960958 100644 --- a/fooder/model/product.py +++ b/fooder/model/product.py @@ -1,31 +1,31 @@ +from typing import Annotated from .base import ( ObjModelMixin, - Macronutrient, - OptionalMacronutrient, Calories, - OptionalCalories, ) -from pydantic import BaseModel +from pydantic import BaseModel, Field from fooder.utils.calories import calculate_calories +MacronutrientPer100g = Annotated[float, Field(ge=0, le=100)] + class ProductModel(ObjModelMixin, BaseModel): name: str - protein: Macronutrient - carb: Macronutrient - fat: Macronutrient - fiber: Macronutrient + protein: MacronutrientPer100g + carb: MacronutrientPer100g + fat: MacronutrientPer100g + fiber: MacronutrientPer100g calories: Calories barcode: str | None = None class ProductCreateModel(BaseModel): name: str - protein: Macronutrient - carb: Macronutrient - fat: Macronutrient - fiber: Macronutrient - calories: OptionalCalories = None + protein: MacronutrientPer100g + carb: MacronutrientPer100g + fat: MacronutrientPer100g + fiber: MacronutrientPer100g + calories: Calories | None = None barcode: str | None = None @property @@ -44,9 +44,9 @@ class ProductCreateModel(BaseModel): class ProductUpdateModel(BaseModel): name: str | None = None - protein: OptionalMacronutrient = None - carb: OptionalMacronutrient = None - fat: OptionalMacronutrient = None - fiber: OptionalMacronutrient = None - calories: OptionalCalories = None + protein: MacronutrientPer100g | None = None + carb: MacronutrientPer100g | None = None + fat: MacronutrientPer100g | None = None + fiber: MacronutrientPer100g | None = None + calories: Calories | None = None barcode: str | None = None diff --git a/fooder/model/user_settings.py b/fooder/model/user_settings.py index 830b7b5..f69eb98 100644 --- a/fooder/model/user_settings.py +++ b/fooder/model/user_settings.py @@ -1,18 +1,18 @@ -from .base import ObjModelMixin, Calories, OptionalCalories +from .base import ObjModelMixin, Macronutrient, Calories from pydantic import BaseModel class UserSettingsModel(ObjModelMixin, BaseModel): - protein_goal: Calories - carb_goal: Calories - fat_goal: Calories - fiber_goal: Calories + protein_goal: Macronutrient + carb_goal: Macronutrient + fat_goal: Macronutrient + fiber_goal: Macronutrient calories_goal: Calories class UserSettingsUpdateModel(BaseModel): - protein_goal: OptionalCalories = None - carb_goal: OptionalCalories = None - fat_goal: OptionalCalories = None - fiber_goal: OptionalCalories = None - calories_goal: OptionalCalories = None + protein_goal: Macronutrient | None = None + carb_goal: Macronutrient | None = None + fat_goal: Macronutrient | None = None + fiber_goal: Macronutrient | None = None + calories_goal: Calories | None = None