Files
app/src/services/audit.ts
2026-03-24 19:59:14 +01:00

35 lines
1.1 KiB
TypeScript

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<string, unknown>;
newValues?: Record<string, unknown>;
}): Promise<void> {
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);
}
}