# app/models/agents.py

from sqlalchemy.sql import func
from app.core.database import Base
from sqlalchemy.orm import relationship
from sqlalchemy import Column, Integer, TIMESTAMP, ForeignKey, Boolean,String

class Agent(Base):
    __tablename__ = "agents"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(100), nullable=False)
    email = Column(String(255), unique=True, nullable=False)
    password_hash = Column(String(255), nullable=False)

    is_online = Column(Boolean, default=False)
    last_seen_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())

    assignments = relationship("AgentAssignmentHistory", back_populates="agent", lazy="selectin")

class AgentAssignmentHistory(Base):
    __tablename__ = "agent_assignment_history"

    id = Column(Integer, primary_key=True, index=True)
    agent_id = Column(Integer, ForeignKey("agents.id"), nullable=False)
    visitor_id = Column(Integer, ForeignKey("visitors.id"), nullable=False)

    started_at = Column(TIMESTAMP, server_default=func.now(), nullable=False)
    ended_at = Column(TIMESTAMP, nullable=True)

    agent = relationship("Agent", back_populates="assignments", lazy="selectin")
    visitor = relationship("Visitor", lazy="selectin")