""" Tool_OCR - User Model v2.0 External API authentication with simplified schema """ from sqlalchemy import Column, Integer, String, DateTime, Boolean from sqlalchemy.orm import relationship from datetime import datetime from app.core.database import Base class User(Base): """ User model for external API authentication Uses email as primary identifier from Azure AD. No password storage - authentication via external API only. """ __tablename__ = "tool_ocr_users" id = Column(Integer, primary_key=True, index=True, autoincrement=True) email = Column(String(255), unique=True, nullable=False, index=True, comment="Primary identifier from Azure AD") display_name = Column(String(255), nullable=True, comment="Display name from API response") created_at = Column(DateTime, default=datetime.utcnow, nullable=False) last_login = Column(DateTime, nullable=True) is_active = Column(Boolean, default=True, nullable=False, index=True) # Relationships tasks = relationship("Task", back_populates="user", cascade="all, delete-orphan") sessions = relationship("Session", back_populates="user", cascade="all, delete-orphan") audit_logs = relationship("AuditLog", back_populates="user") def __repr__(self): return f"" def to_dict(self): """Convert user to dictionary""" return { "id": self.id, "email": self.email, "display_name": self.display_name, "created_at": self.created_at.isoformat() if self.created_at else None, "last_login": self.last_login.isoformat() if self.last_login else None, "is_active": self.is_active }