import { Global, MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { APP_FILTER } from '@nestjs/core'; import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ApplicationErrorFilter } from './application-error.filter'; import { ApplicationErrorLog } from './application-error-log.entity'; import { ApplicationErrorLoggerService } from './application-error-logger.service'; import { CorrelationIdMiddleware } from '../common/correlation-id.middleware'; import { RequestContextService } from '../common/request-context.service'; @Global() @Module({ imports: [ConfigModule, TypeOrmModule.forFeature([ApplicationErrorLog])], providers: [ RequestContextService, CorrelationIdMiddleware, ApplicationErrorLoggerService, { provide: APP_FILTER, useClass: ApplicationErrorFilter, }, ], exports: [ApplicationErrorLoggerService, RequestContextService], }) export class ApplicationErrorLogModule implements NestModule { configure(consumer: MiddlewareConsumer): void { consumer.apply(CorrelationIdMiddleware).forRoutes('*'); } }