mashafrancis/butternut-user

View on GitHub
src/app/_helpers/middleware/request-context.middleware.ts

Summary

Maintainability
A
0 mins
Test Coverage
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();
            });
        };
    }
}