All files / lib activity.ts

0% Statements 0/22
0% Branches 0/1
0% Functions 0/1
0% Lines 0/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23                                             
import { prisma } from './db';
import { cacheInvalidatePattern } from './cache';

// Activity log entries.  Retention: 90 days (legal req — handled by a
// cleanup job that runs daily and deletes rows older than 90 days).
// Writes go straight to DB (no cache for writes), and we invalidate any
// `activity:*` read caches.

export async function logActivity({
  userId,
  action,
  detail,
}: {
  userId: string;
  action: string;
  detail?: string | null;
}): Promise<void> {
  await prisma.activityLog.create({
    data: { userId, action, detail: detail ?? null },
  });
  await cacheInvalidatePattern('activity:*');
}