Files
lehuo/apps/api/src/app.module.ts
T

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('*');
}
}