import uuid from datetime import datetime from sqlalchemy import DateTime, ForeignKey, String, func from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base class AdminAuditLog(Base): __tablename__ = "admin_audit_log" id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4) actor_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("users.id"), index=True, nullable=False) action: Mapped[str] = mapped_column(String(100), nullable=False) target_type: Mapped[str] = mapped_column(String(50), nullable=False) target_id: Mapped[uuid.UUID] = mapped_column(nullable=False) metadata_: Mapped[dict | None] = mapped_column("metadata", JSONB) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False, index=True ) actor = relationship("User")