NutritionAIAPI / app /models.py
Sakshi
nutrition
96f792c
Raw
History Blame Contribute Delete
1.76 kB
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")