38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import uuid
|
|
from sqlalchemy import Column, String, DateTime, Text
|
|
from sqlalchemy.dialects.postgresql import UUID, JSONB
|
|
from sqlalchemy.sql import func
|
|
from app.config.database import Base
|
|
|
|
class AuditLog(Base):
|
|
__tablename__ = "audit_logs"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, index=True)
|
|
|
|
module_name = Column(String(100), nullable=False, index=True)
|
|
|
|
action_type = Column(String(20), nullable=False, index=True)
|
|
|
|
description = Column(Text, nullable=True)
|
|
|
|
entity_id = Column(String(255), nullable=True)
|
|
|
|
entity_name = Column(String(255), nullable=True)
|
|
|
|
performed_by_id = Column(UUID(as_uuid=True), nullable=True)
|
|
performed_by_email = Column(String(255), nullable=True, index=True)
|
|
|
|
ip_address = Column(String(45), nullable=True)
|
|
|
|
old_values = Column(JSONB, nullable=True)
|
|
|
|
new_values = Column(JSONB, nullable=True)
|
|
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now(), index=True)
|
|
|
|
|
|
def __repr__(self):
|
|
return (
|
|
f"<AuditLog {self.action_type} on {self.module_name}"
|
|
f" by {self.performed_by_email}"
|
|
) |