Spaces:
Sleeping
Sleeping
| from sqlalchemy import Date,Column, Integer, String, Float, ForeignKey, DateTime,Boolean | |
| from sqlalchemy.orm import relationship | |
| from app.db.database import Base | |
| from datetime import datetime | |
| 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) | |
| created_at=Column(DateTime,default=datetime.utcnow) | |
| is_2fa_enabled=Column(Boolean,default=False) | |
| totp_secret=Column(String,nullable=True) | |
| history=relationship("History",back_populates="user") | |
| reset_codes=relationship("PasswordReset",back_populates="user") | |
| full_name=Column(String,nullable=True) | |
| age=Column(Integer, nullable=True) | |
| gender = Column(String, nullable=True) | |
| height_cm = Column(Float, nullable=True) | |
| weight_kg = Column(Float, nullable=True) | |
| activity_level = Column(String, nullable=True) | |
| goal_type = Column(String, nullable=True) | |
| calorie_goal_mode = Column(String, nullable=True) | |
| calorie_goal_manual = Column(Float, nullable=True) | |
| weight_goal_kg = Column(Float, nullable=True) | |
| setup_completed = Column(Boolean, default=False) | |
| start_weight = Column(Float, nullable=True) | |
| weight_logs = relationship("WeightLog", back_populates="user", cascade="all, delete-orphan") | |
| class WeightLog(Base): | |
| __tablename__="weight_logs" | |
| id=Column(Integer,primary_key=True,index=True) | |
| user_id=Column(Integer,ForeignKey("users.id"),nullable=False) | |
| weight_kg = Column(Float, nullable=False) | |
| date = Column(Date, nullable=False) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| user=relationship("User",back_populates="weight_logs") | |
| class History(Base): | |
| __tablename__="history" | |
| id=Column(Integer,primary_key=True,index=True) | |
| label=Column(String,nullable=False) | |
| grams=Column(Integer,nullable=False) | |
| calories=Column(Float,nullable=False) | |
| protein_g=Column(Float,nullable=False,default=0.0) | |
| carbs_g=Column(Float,nullable=False,default=0.0) | |
| fat_g=Column(Float,nullable=False,default=0.0) | |
| meal_type = Column(String, nullable=True) | |
| meal_time = Column(String, nullable=True) | |
| log_date = Column(DateTime, nullable=True) | |
| created_at=Column(DateTime,default=datetime.utcnow) | |
| user_id=Column(Integer,ForeignKey("users.id")) | |
| user=relationship("User",back_populates="history") | |
| class PasswordReset(Base): | |
| __tablename__="password_resets" | |
| id=Column(Integer,primary_key=True,index=True) | |
| user_id=Column(Integer,ForeignKey("users.id"),nullable=False) | |
| reset_code=Column(String,nullable=False) | |
| expires_at=Column(DateTime,nullable=False) | |
| is_used=Column(Integer,default=0) | |
| created_at=Column(DateTime,default=datetime.utcnow) | |
| user=relationship("User",back_populates="reset_codes") |