import uuid from datetime import datetime from sqlalchemy import String, DateTime, func from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.dialects.postgresql import UUID, JSONB from app.database import Base class AuditLog(Base): __tablename__ = "audit_logs" id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) entity_type: Mapped[str] = mapped_column(String(30)) entity_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True)) entity_name: Mapped[str] = mapped_column(String(200), default="") action: Mapped[str] = mapped_column(String(10)) # create / update / delete operator_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True)) operator_name: Mapped[str] = mapped_column(String(50), default="") summary: Mapped[str | None] = mapped_column(String(500), nullable=True) details: Mapped[dict | None] = mapped_column(JSONB, nullable=True) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())