import { Request, Response, NextFunction } from "express";
import { recordAuditLog } from "./audit.service";

// Attach on routes that mutate state: router.use(auditMiddleware('guards'))
export function auditMiddleware(resource: string) {
  return (req: Request, res: Response, next: NextFunction) => {
    res.on("finish", () => {
      if (res.statusCode < 400 && req.method !== "GET") {
        recordAuditLog({
          userId: req.user?.id,
          tenantId: req.tenantId,
          action: `${req.method} ${req.path}`,
          resource,
          resourceId: req.params.id,
        });
      }
    });
    next();
  };
}
