import uuid from datetime import datetime from sqlalchemy import Column, String, Boolean, DateTime, Enum as SQLEnum from sqlalchemy.dialects.postgresql import UUID import enum from app.core.database import Base class UserRole(str, enum.Enum): ADMIN = "admin" SUPERVISOR = "supervisor" AGENT = "agent" class UserStatus(str, enum.Enum): ONLINE = "online" OFFLINE = "offline" AWAY = "away" BUSY = "busy" class User(Base): __tablename__ = "users" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) email = Column(String(255), unique=True, nullable=False, index=True) password_hash = Column(String(255), nullable=False) name = Column(String(100), nullable=False) role = Column(SQLEnum(UserRole), default=UserRole.AGENT, nullable=False) status = Column(SQLEnum(UserStatus), default=UserStatus.OFFLINE, nullable=False) is_active = Column(Boolean, default=True, nullable=False) created_at = Column(DateTime, default=datetime.utcnow, nullable=False) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)