[models] simplify calories and macros'

This commit is contained in:
Piotr Domański 2026-04-07 17:39:39 +02:00
parent 0ea4c0b4b0
commit 57e1732ef1
3 changed files with 29 additions and 31 deletions

View file

@ -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:

View file

@ -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

View file

@ -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