Files
2026-09-13 20:20:06 +01:00

32 lines
917 B
TypeScript

import prisma from './db';
/**
* Logs an API request to the database.
* This is intentionally fire-and-forget — it never blocks the response path.
*/
export function logApiRequest(
endpoint: string,
status: number,
duration: number
): void {
prisma.apiRequestLog
.create({ data: { endpoint, status, duration } })
.catch((error) => console.error('Failed to log API request:', error));
// Prune old logs in the background (keep last 7 days)
pruneOldLogs();
}
let lastPruneAt = 0;
const PRUNE_INTERVAL = 60 * 60 * 1000; // prune at most once per hour
function pruneOldLogs(): void {
if (Date.now() - lastPruneAt < PRUNE_INTERVAL) return;
lastPruneAt = Date.now();
const cutoff = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
prisma.apiRequestLog
.deleteMany({ where: { createdAt: { lt: cutoff } } })
.catch((error) => console.error('Failed to prune API logs:', error));
}