// Consultation du journal d'audit (onglet Réglages / outils de conformité). Lecture seule, sous
// l'auth globale. Pagination par curseur `before` (ts décroissant).
import type { FastifyInstance } from 'fastify';
import type { AuditLogsResponse } from '@arboretum/shared';
import type { Db } from '../db/index.js';
import { listAudit } from '../core/audit-log.js';

export function registerAuditRoutes(app: FastifyInstance, db: Db): void {
  app.get('/api/v1/audit-logs', async (req): Promise<AuditLogsResponse> => {
    const q = req.query as { limit?: string; before?: string };
    const limit = Math.min(Math.max(Math.trunc(Number(q.limit) || 50), 1), 200);
    const entries = listAudit(db, { limit, before: q.before ?? null });
    // s'il reste potentiellement des entrées (page pleine), expose le curseur suivant.
    const nextBefore = entries.length === limit ? entries[entries.length - 1]!.ts : null;
    return { entries, nextBefore };
  });
}
