27 lines
606 B
Python
27 lines
606 B
Python
from sqlalchemy.orm import Mapped
|
|
|
|
from fooder.domain.base import Base, CommonMixin
|
|
|
|
|
|
class Product(Base, CommonMixin):
|
|
"""Product."""
|
|
|
|
name: Mapped[str]
|
|
|
|
protein: Mapped[float]
|
|
carb: Mapped[float]
|
|
fat: Mapped[float]
|
|
fiber: Mapped[float]
|
|
hard_coded_calories: Mapped[float | None]
|
|
barcode: Mapped[str | None]
|
|
|
|
@property
|
|
def calories(self) -> float:
|
|
"""calories.
|
|
|
|
:rtype: float
|
|
"""
|
|
if self.hard_coded_calories:
|
|
return self.hard_coded_calories
|
|
|
|
return self.protein * 4 + self.carb * 4 + self.fat * 9 + self.fiber * 2
|