import { Logger, MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { UserModule } from './user/user.module'; import { AuthModule } from './auth/auth.module'; import { RequestContextMiddleware } from 'core/als/request-context.middleware'; import { RequestContextModule } from 'core/als/request-context.module'; import { ConfigModule } from '@nestjs/config'; import { PrismaModule } from './prisma/prisma.module'; import { APP_FILTER, APP_INTERCEPTOR } from '@nestjs/core'; import { ResponseInterceptor } from 'common/interceptors/response.interceptor'; import { ExceptionsHandler } from '@nestjs/core/exceptions/exceptions-handler'; import { HttpExceptionFilter } from 'common/exceptions/exception-filter'; import { OrganizationModule } from './organization/organization.module'; import { OrganizationMembershipModule } from './organization-membership/organization-membership.module'; import { AuthorizationModule } from './authorization/authorization.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), UserModule, AuthModule, RequestContextModule, PrismaModule, OrganizationModule, OrganizationMembershipModule, AuthorizationModule, ], controllers: [AppController], providers: [ AppService, Logger, { provide: APP_INTERCEPTOR, useClass: ResponseInterceptor, }, { provide: APP_FILTER, useClass: HttpExceptionFilter, }, ], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(RequestContextMiddleware).forRoutes('*paths'); } }