import uuid from sqlalchemy import Column, String, DateTime, ForeignKey, func from sqlalchemy.dialects.postgresql import UUID, JSONB from sqlalchemy.orm import relationship from app.database import Base class AuditLog(Base): """ Audit log model for tracking all system actions. Records user actions, entity changes, and system events for security auditing and compliance purposes. """ __tablename__ = "audit_logs" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) action = Column(String, nullable=False) entity_type = Column(String, nullable=True) entity_id = Column(String, nullable=True) timestamp = Column(DateTime(timezone=True), server_default=func.now()) details = Column(JSONB, nullable=True) # Relationships user = relationship("User")