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")