"""
Database models for the Aiguid Backend API.
Imports User model from /opt/aiguide and defines local models.
"""

import sys
from datetime import datetime
from typing import Optional

from sqlalchemy import Boolean, Column, DateTime, Integer, String
from sqlalchemy.sql import func

# Import models from /opt/aiguide
sys.path.append('/opt/aiguide/app/models')
from models_db import Base, User


class UserSession(Base):
    """User session model for tracking active sessions."""
    
    __tablename__ = "user_sessions"
    
    id: int = Column(Integer, primary_key=True, index=True)
    user_id: int = Column(Integer, nullable=False, index=True)
    token_hash: str = Column(String(255), nullable=False, unique=True)
    expires_at: datetime = Column(DateTime(timezone=True), nullable=False)
    created_at: datetime = Column(
        DateTime(timezone=True), 
        server_default=func.now(),
        nullable=False
    )
    is_active: bool = Column(Boolean, default=True, nullable=False)
    
    def __repr__(self) -> str:
        return f"<UserSession(id={self.id}, user_id={self.user_id}, active={self.is_active})>"
    
    @property
    def is_expired(self) -> bool:
        """Check if session is expired."""
        return datetime.utcnow() > self.expires_at 