2025-05-30 20:35:55 +00:00

31 lines
1.2 KiB
Python

"""
User model for the application
"""
from datetime import datetime
from sqlalchemy import Column, String, Integer, DateTime, Float, Boolean
from sqlalchemy.orm import relationship
from app.db.base import Base
class User(Base):
"""User model for storing user related data"""
id = Column(Integer, primary_key=True, index=True)
email = Column(String, unique=True, index=True, nullable=False)
username = Column(String, unique=True, index=True, nullable=False)
hashed_password = Column(String, nullable=False)
first_name = Column(String, nullable=True)
last_name = Column(String, nullable=True)
is_active = Column(Boolean, default=True)
is_superuser = Column(Boolean, default=False)
# User's target daily calories
target_calories = Column(Float, default=2000.0)
height_cm = Column(Float, nullable=True)
weight_kg = Column(Float, nullable=True)
date_of_birth = Column(DateTime, nullable=True)
gender = Column(String, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationships
calorie_entries = relationship("CalorieEntry", back_populates="user", cascade="all, delete-orphan")