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