import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { BullModule } from '@nestjs/bull'; import { ScheduleModule } from '@nestjs/schedule'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { CacheModule } from '@nestjs/cache-manager'; import * as redisStore from 'cache-manager-redis-store'; // Import des configurations import appConfig from './config/app.config'; import operatorsConfig from './config/operators.config'; import databaseConfig from './config/database.config'; // Import des modules import { PrismaService } from './shared/services/prisma.service'; import { AuthModule } from './modules/auth/auth.module'; import { PartnersModule } from './modules/partners/partners.module'; import { OperatorsModule } from './modules/operators/operators.module'; import { PaymentsModule } from './modules/payments/payments.module'; import { SubscriptionsModule } from './modules/subscriptions/subscriptions.module'; import { NotificationsModule } from './modules/notifications/notifications.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, load: [appConfig, operatorsConfig, databaseConfig], envFilePath: ['.env.local', '.env'], }), BullModule.forRootAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => ({ redis: { host: configService.get('app.redis.host'), port: configService.get('app.redis.port'), }, }), inject: [ConfigService], }), CacheModule.registerAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => ({ store: redisStore, host: configService.get('app.redis.host'), port: configService.get('app.redis.port'), ttl: 600, // 10 minutes default }), inject: [ConfigService], isGlobal: true, }), ScheduleModule.forRoot(), EventEmitterModule.forRoot(), AuthModule, PartnersModule, OperatorsModule, PaymentsModule, SubscriptionsModule, NotificationsModule, ], providers: [PrismaService], exports: [PrismaService], }) export class AppModule {}