import type { FastifyInstance } from 'fastify';
import { authenticate, requireRole } from '../middleware/auth.js';
import { auditService } from '../services/auditService.js';

export async function auditRoutes(fastify: FastifyInstance) {
  // GET /api/v1/audit-logs  (Admin only)
  fastify.get('/', { preHandler: [authenticate, requireRole('admin')] }, async (req, reply) => {
    const q = req.query as Record<string, string>;
    const logs = await auditService.query({
      actorId:    q.actor_id,
      action:     q.action,
      entityType: q.entity_type,
      entityId:   q.entity_id,
      from:       q.from,
      to:         q.to,
      limit:      q.limit  ? Number(q.limit)  : 50,
      offset:     q.offset ? Number(q.offset) : 0,
    });
    return reply.send(logs);
  });
}
