import type { Request } from "express";
import { prisma } from "../config/prisma.js";

export async function audit(
  req: Request,
  action: string,
  entityType: string,
  entityId: string | number | null,
  oldData: unknown = null,
  newData: unknown = null
) {
  try {
    await prisma.auditLog.create({
      data: {
        userId: req.user?.id ?? null,
        userName: req.user?.fullName ?? null,
        action,
        entityType,
        entityId: entityId != null ? String(entityId) : null,
        oldData: (oldData ?? undefined) as any,
        newData: (newData ?? undefined) as any,
        ip: req.ip ?? null,
      },
    });
  } catch (e) {
    console.error("audit log error:", e);
  }
}
