import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler';
import { APP_GUARD } from '@nestjs/core';

import { PrismaModule } from './prisma/prisma.module';
import { AuthModule } from './auth/auth.module';
import { ActivationModule } from './activation/activation.module';
import { UsersModule } from './users/users.module';
import { LevelsModule } from './levels/levels.module';
import { ChaptersModule } from './chapters/chapters.module';
import { QuestionsModule } from './questions/questions.module';
import { ProgressModule } from './progress/progress.module';
import { MilestonesModule } from './milestones/milestones.module';
import { TermsModule } from './terms/terms.module';
import { CardsModule } from './cards/cards.module';
import { AchievementsModule } from './achievements/achievements.module';
import { CertificateModule } from './certificate/certificate.module';
import { GoalsModule } from './goals/goals.module';
import { JournalModule } from './journal/journal.module';
import { ParentGuideModule } from './parent-guide/parent-guide.module';
import { FeatureFlagsModule } from './feature-flags/feature-flags.module';
import { BillingModule } from './billing/billing.module';

@Module({
  imports: [
    ConfigModule.forRoot({ isGlobal: true }),
    ThrottlerModule.forRoot([{ ttl: 60_000, limit: 120 }]), // sane global default; stricter limits set per-route (see AuthController)
    PrismaModule,

    AuthModule,
    ActivationModule,
    UsersModule,
    LevelsModule,
    ChaptersModule,
    QuestionsModule,
    ProgressModule,
    MilestonesModule,
    TermsModule,
    CardsModule,
    AchievementsModule,
    CertificateModule,
    GoalsModule,
    JournalModule,
    ParentGuideModule,
    FeatureFlagsModule,
    BillingModule,
  ],
  providers: [{ provide: APP_GUARD, useClass: ThrottlerGuard }],
})
export class AppModule {}
