src/app/_helpers/middleware/request-context.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
import cls from 'cls-hooked';
import { Request, Response } from 'express';
import { RequestContext } from '../request-context';
@Injectable()
// @ts-ignore
export class RequestContextMiddleware implements NestMiddleware {
resolve() {
return (req: Request, res: Response, next) => {
const requestContext = new RequestContext(req, res);
const session =
cls.getNamespace(RequestContext.nsid) ||
cls.createNamespace(RequestContext.nsid);
session.run(async () => {
session.set(RequestContext.name, requestContext);
next();
});
};
}
}