67 lines
3.0 KiB
TypeScript
67 lines
3.0 KiB
TypeScript
import { MiddlewareConsumer, Module, type NestModule } from '@nestjs/common';
|
|
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
|
|
import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler';
|
|
|
|
import { AuditModule } from './audit/audit.module';
|
|
import { AuthModule } from './auth/auth.module';
|
|
import { CaseManagementModule } from './case-management/case-management.module';
|
|
import { AuthenticationGuard } from './auth/authentication.guard';
|
|
import { ApiExceptionFilter } from './common/api-exception.filter';
|
|
import { ApiResponseInterceptor } from './common/api-response.interceptor';
|
|
import { RequestIdMiddleware } from './common/request-id.middleware';
|
|
import { AppConfigModule } from './config/app-config.module';
|
|
import { DatabaseModule } from './database/database.module';
|
|
import { HealthController } from './health/health.controller';
|
|
import { HealthService } from './health/health.service';
|
|
import { FollowUpsModule } from './follow-ups/follow-ups.module';
|
|
import { PermissionGuard } from './permissions/permission.guard';
|
|
import { PermissionsModule } from './permissions/permissions.module';
|
|
import { ParticipationModule } from './participation/participation.module';
|
|
import { SecurityModule } from './security/security.module';
|
|
import { ServiceApplicationsModule } from './service-applications/service-applications.module';
|
|
import { UsersModule } from './users/users.module';
|
|
import { ContentNotificationsModule } from './content-notifications/content-notifications.module';
|
|
import { StatisticsModule } from './statistics/statistics.module';
|
|
import { RequestMetricsService } from './common/request-metrics.service';
|
|
import { RequestMetricsInterceptor } from './common/request-metrics.interceptor';
|
|
import { SystemMetricsController } from './common/system-metrics.controller';
|
|
import { FinancialDisclosuresModule } from './financial-disclosures/financial-disclosures.module';
|
|
import { OldItemsModule } from './old-items/old-items.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
AppConfigModule,
|
|
SecurityModule,
|
|
DatabaseModule,
|
|
AuditModule,
|
|
PermissionsModule,
|
|
ThrottlerModule.forRoot([{ name: 'default', ttl: 60_000, limit: 100 }]),
|
|
AuthModule,
|
|
UsersModule,
|
|
ServiceApplicationsModule,
|
|
CaseManagementModule,
|
|
FollowUpsModule,
|
|
ParticipationModule,
|
|
ContentNotificationsModule,
|
|
StatisticsModule,
|
|
FinancialDisclosuresModule,
|
|
OldItemsModule,
|
|
],
|
|
controllers: [HealthController, SystemMetricsController],
|
|
providers: [
|
|
HealthService,
|
|
RequestMetricsService,
|
|
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
|
{ provide: APP_GUARD, useClass: AuthenticationGuard },
|
|
{ provide: APP_GUARD, useClass: PermissionGuard },
|
|
{ provide: APP_INTERCEPTOR, useClass: ApiResponseInterceptor },
|
|
{ provide: APP_INTERCEPTOR, useClass: RequestMetricsInterceptor },
|
|
{ provide: APP_FILTER, useClass: ApiExceptionFilter },
|
|
],
|
|
})
|
|
export class AppModule implements NestModule {
|
|
configure(consumer: MiddlewareConsumer): void {
|
|
consumer.apply(RequestIdMiddleware).forRoutes('*');
|
|
}
|
|
}
|