import {AuditAction, Prisma} from "@prisma/client";
import {prisma} from "@/lib/db/prisma";

type AuditPayload = {
  action: AuditAction;
  entityType: string;
  entityId: string;
  tenantId?: string | null;
  userId?: string | null;
  oldValues?: Prisma.JsonObject | null;
  newValues?: Prisma.JsonObject | null;
  ipAddress?: string | null;
  userAgent?: string | null;
};

export async function logAudit(payload: AuditPayload) {
  return prisma.auditLog.create({
    data: {
      action: payload.action,
      entityType: payload.entityType,
      entityId: payload.entityId,
      tenantId: payload.tenantId ?? null,
      userId: payload.userId ?? null,
      oldValues: payload.oldValues ?? undefined,
      newValues: payload.newValues ?? undefined,
      ipAddress: payload.ipAddress ?? null,
      userAgent: payload.userAgent ?? null
    }
  });
}