"""Superadmin audit log model.""" import logging from gatehouse_app.extensions import db from gatehouse_app.models.base import BaseModel logger = logging.getLogger(__name__) class SuperadminAuditLog(BaseModel): """Audit log for superadmin actions. Records every action performed by superadmins for security and compliance. """ __tablename__ = "superadmin_audit_logs" superadmin_id = db.Column( db.String(36), db.ForeignKey("superadmins.id"), nullable=False, index=True ) action = db.Column(db.String(100), nullable=False, index=True) resource_type = db.Column(db.String(50), nullable=False, index=True) resource_id = db.Column(db.String(36), nullable=True, index=True) org_id = db.Column(db.String(36), nullable=True, index=True) user_id = db.Column(db.String(36), nullable=True, index=True) ip_address = db.Column(db.String(45), nullable=True) user_agent = db.Column(db.Text, nullable=True) request_id = db.Column(db.String(100), nullable=True) extra_data = db.Column(db.JSON, nullable=True) success = db.Column(db.Boolean, default=True, nullable=False) error_message = db.Column(db.String(500), nullable=True) # Relationship superadmin = db.relationship("Superadmin", back_populates="audit_logs") def __repr__(self): return ( f"" ) def to_dict(self, exclude=None): """Convert to dictionary.""" exclude = exclude or [] return super().to_dict(exclude=exclude)