Spaces:
Sleeping
Sleeping
| 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") | |