import { FastifyRequest } from "fastify"; import prisma from "../config/database"; import { AuditAction, EntityType, AuthData } from "../types"; export async function logAudit(params: { request: FastifyRequest; authData?: AuthData | null; action: AuditAction; entityType?: EntityType; entityId?: number; description?: string; oldValues?: Record; newValues?: Record; }): Promise { try { await prisma.audit_logs.create({ data: { user_id: params.authData?.userId ?? null, username: params.authData?.username ?? null, user_ip: params.request.ip, action: params.action, entity_type: params.entityType ?? null, entity_id: params.entityId ?? null, description: params.description ?? null, old_values: params.oldValues ? JSON.stringify(params.oldValues) : null, new_values: params.newValues ? JSON.stringify(params.newValues) : null, user_agent: params.request.headers["user-agent"] ?? null, session_id: null, }, }); } catch (err) { console.error("Failed to write audit log:", err); } }