from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime
from sqlalchemy.orm import relationship
from utils.db_connect import BaseModelForTable
from sqlalchemy.dialects.postgresql import UUID


class ActivityLog(BaseModelForTable):
    __tablename__ = 'activity_logs'
    done_by = Column(UUID, ForeignKey('users.id'), nullable=False)
    ticket_id = Column(UUID, ForeignKey('tickets.id'), nullable=False)
    action = Column(String(255), nullable=False)
    old_value = Column(Text, nullable=True)
    new_value = Column(Text, nullable=True)

    # Relationships
    actor = relationship("User", back_populates="activity_logs")
    ticket = relationship("Ticket", back_populates="activity_logs")

    def __repr__(self):
        return f"<ActivityLog(id={self.id}, done_by={self.done_by}, action='{self.action}')>"