#users_models.py 
from sqlalchemy import Column, Integer, String, DateTime, UniqueConstraint
from datetime import datetime
from src.utils.db import Base, engine
from sqlalchemy.orm import relationship


#database table for users
class User(Base):
    __tablename__ = "users"

    user_id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    name = Column(String, nullable=False)
    email = Column(String, unique=True, nullable=False)
    password_hash = Column(String, nullable=False)
    role = Column(String, nullable=False, default="customer")
    created_at = Column(DateTime, default=datetime.utcnow)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

    # Relationships
    stores = relationship("Store", back_populates="user", lazy="joined", cascade="all, delete-orphan")
    password_reset_tokens = relationship("PasswordResetToken", back_populates="user", cascade="all, delete-orphan")

    __table_args__ = (UniqueConstraint('email', name='uq_users_email'),)


#Base.metadata.create_all(bind=engine)




