NutritionAIAPI / app /models.py
Sakshi
nutrition
96f792c
from sqlalchemy import Column, Integer, String, Float, ForeignKey, Enum
from sqlalchemy.orm import relationship
from app.database import Base
import enum
class UserRole(str, enum.Enum):
ADMIN = "admin"
USER = "user"
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, index=True, nullable=False)
email = Column(String, unique=True, index=True, nullable=False)
hashed_password = Column(String, nullable=False)
role = Column(Enum(UserRole), default=UserRole.USER, nullable=False)
health_issues = relationship("HealthIssue", back_populates="user", cascade="all, delete-orphan")
class Product(Base):
__tablename__ = "products"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True, nullable=False)
brand = Column(String, nullable=True)
calories = Column(Float, nullable=False)
protein = Column(Float, nullable=False)
fat = Column(Float, nullable=False)
carbohydrates = Column(Float, nullable=False)
sodium = Column(Float, nullable=False)
sugar = Column(Float, nullable=False)
fiber = Column(Float, nullable=True)
cholesterol = Column(Float, nullable=True)
serving_size = Column(String, nullable=True)
image_path = Column(String, nullable=True)
class HealthIssue(Base):
__tablename__ = "health_issues"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
issue_type = Column(String, nullable=False)
severity = Column(String, nullable=True)
notes = Column(String, nullable=True)
user = relationship("User", back_populates="health_issues")