import { Module } from '@nestjs/common'; import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core'; import { PrismaModule } from './prisma/prisma.module.js'; import { RedisModule } from './common/redis/redis.module.js'; import { createLoggerModule } from './logging/logger.config.js'; import { AuthModule } from './auth/auth.module.js'; import { JwtAuthGuard } from './auth/jwt-auth.guard.js'; import { PermissionsGuard } from './auth/permissions.guard.js'; import { RequestContextInterceptor } from './auth/request-context.interceptor.js'; import { BodyLoggingInterceptor } from './logging/body-logging.interceptor.js'; import { TransformInterceptor } from './common/interceptors/transform.interceptor.js'; import { AuditLogInterceptor } from './common/interceptors/audit-log.interceptor.js'; import { AllExceptionsFilter } from './common/filters/http-exception.filter.js'; import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler'; import { ScheduleModule } from '@nestjs/schedule'; import { CleanupService } from './common/cleanup.service.js'; import { TenantsModule } from './tenants/tenants.module.js'; import { UsersModule } from './users/users.module.js'; import { RolesModule } from './roles/roles.module.js'; import { ResourcesModule } from './resources/resources.module.js'; import { OrgsModule } from './orgs/orgs.module.js'; import { DictsModule } from './dicts/dicts.module.js'; import { ConfigsModule } from './configs/configs.module.js'; import { AuditLogsModule } from './audit-logs/audit-logs.module.js'; import { LoginLogsModule } from './login-logs/login-logs.module.js'; import { SessionsModule } from './sessions/sessions.module.js'; import { NoticesModule } from './notices/notices.module.js'; import { AgencyModule } from './agency/agency.module.js'; import { AppController } from './app.controller.js'; import { AppService } from './app.service.js'; @Module({ imports: [ ThrottlerModule.forRoot([{ ttl: 60000, limit: 100 }]), ScheduleModule.forRoot(), createLoggerModule(), PrismaModule, RedisModule, AuthModule, TenantsModule, UsersModule, RolesModule, ResourcesModule, OrgsModule, DictsModule, ConfigsModule, AuditLogsModule, LoginLogsModule, SessionsModule, NoticesModule, AgencyModule, ], controllers: [AppController], providers: [ AppService, CleanupService, { provide: APP_GUARD, useClass: ThrottlerGuard }, { provide: APP_GUARD, useClass: JwtAuthGuard }, { provide: APP_GUARD, useClass: PermissionsGuard }, { provide: APP_INTERCEPTOR, useClass: RequestContextInterceptor }, { provide: APP_INTERCEPTOR, useClass: BodyLoggingInterceptor }, { provide: APP_INTERCEPTOR, useClass: TransformInterceptor }, { provide: APP_INTERCEPTOR, useClass: AuditLogInterceptor }, { provide: APP_FILTER, useClass: AllExceptionsFilter }, ], }) export class AppModule {}