import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; import { randomUUID } from 'crypto'; import { RequestContextService } from './request-context.service'; @Injectable() export class RequestContextMiddleware implements NestMiddleware { constructor(private readonly ctx: RequestContextService) {} use(req: Request, _: Response, next: NextFunction) { const context = { requestId: randomUUID(), correlationId: (req.headers['x-correlation-id'] as string) ?? undefined, headers: req.headers as Record, }; this.ctx.run(context, next); } }