#auth_model.py
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean
from sqlalchemy.orm import relationship
from datetime import datetime
from src.utils.db import Base, engine
from src.apps.users.models import User

class UserSession(Base):
    __tablename__ = "usersessions"

    id = Column(Integer, primary_key=True, autoincrement=True)
    user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
    token = Column(String, unique=True, nullable=False)  # Store JWT token
    created_at = Column(DateTime, default=datetime.utcnow)
    login_code = Column(String, unique=True, nullable=True)  # New login token
    is_login_code_used = Column(Boolean, default=False, nullable=True)  # Defaults to False

    user = relationship("User")  # Define relationship to users table


class PasswordResetToken(Base):
    __tablename__ = "password_reset_tokens"

    id = Column(Integer, primary_key=True, autoincrement=True)
    user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False)
    token = Column(String, unique=True, nullable=False)
    created_at = Column(DateTime, default=datetime.utcnow)
    expires_at = Column(DateTime, nullable=False)  # Token expiration

        # Optional: Create a relationship to the User model if needed
    user = relationship("User", back_populates="password_reset_tokens") 


def __repr__(self):
        return f"<PasswordResetToken(id={self.id}, user_id={self.user_id}, token={self.token})>"
        

#Base.metadata.create_all(bind=engine)