import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { APP_GUARD, APP_INTERCEPTOR, APP_FILTER } from '@nestjs/core'; import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler'; import { UserModule } from './modules/user/user.module'; import { SuperAdminModule } from './modules/super-admin/super-admin.module'; import { PrismaService } from './shared/modules/prisma/prisma.service'; import { CommonModule } from './shared/modules/common/common.module'; import { DiscordLoggerModule } from './shared/modules/discord-logger/discord-logger.module'; import { BaseQueryCoreModule } from './core/base-query-core/base-query-core.module'; import { UploadModule } from './shared/modules/upload/upload.module'; import { ShortUrlModule } from './shared/modules/short-url/short-url.module'; import { AppController } from './app.controller'; import { ApiTokenGuard } from './shared/guards/api-token.guard'; import { DiscordLoggerInterceptor } from './shared/modules/discord-logger/discord-logger.interceptor'; import { DiscordExceptionFilter } from './shared/modules/discord-logger/discord-logger.filter'; @Module({ imports: [ ConfigModule.forRoot({ envFilePath: '.env', isGlobal: true, cache: true, }), ThrottlerModule.forRoot([ { limit: 1000, ttl: 60000, }, ]), CommonModule, DiscordLoggerModule, BaseQueryCoreModule, UploadModule, ShortUrlModule, UserModule, SuperAdminModule, ], controllers: [AppController], providers: [ { provide: APP_FILTER, useClass: DiscordExceptionFilter, }, { provide: APP_INTERCEPTOR, useClass: DiscordLoggerInterceptor, }, { provide: APP_GUARD, useClass: ApiTokenGuard, }, { provide: APP_GUARD, useClass: ThrottlerGuard, }, PrismaService, ], exports: [PrismaService], }) export class AppModule {}