cosmin1769's picture
Upload 124 files
21ff07a verified
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")