import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { ThrottlerModule } from '@nestjs/throttler'; import { AppConfigModule } from './config/config.module'; import { PrismaModule } from './modules/prisma/prisma.module'; import { SessionModule } from './modules/session/session.module'; import { OAuth2Module } from './modules/oauth2/oauth2.module'; import { MeModule } from './modules/me/me.module'; import { ArticlesModule } from './modules/articles/articles.module'; import { CommentsModule } from './modules/comments/comments.module'; import { ModerationModule } from './modules/moderation/moderation.module'; import { JobsModule } from './modules/jobs/jobs.module'; import { HealthModule } from './modules/health/health.module'; import { UsersModule } from './modules/users/users.module'; import { EmailModule } from './modules/email/email.module'; import { AnalyticsModule } from './modules/analytics/analytics.module'; import { AdminCommentsModule } from './modules/admin/admin-comments/admin-comments.module'; import { AdminArticlesModule } from './modules/admin/admin-articles/admin-articles.module'; import { InitModule } from './modules/init/init.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), AppConfigModule, PrismaModule, SessionModule, OAuth2Module, MeModule, ArticlesModule, CommentsModule, ModerationModule, JobsModule, HealthModule, UsersModule, EmailModule, AnalyticsModule, AdminCommentsModule, AdminArticlesModule, InitModule, ThrottlerModule.forRootAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => { const ttl = configService.get('THROTTLE_TTL'); const limit = configService.get('THROTTLE_LIMIT'); return { ttl: ttl ?? 60000, limit: limit ?? 100, } as any; // Type assertion to bypass strict type checking }, inject: [ConfigService], }), ], }) export class AppModule {}