60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
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 { OperatorsModule } from './modules/operators/operators.module';
|
|
import { PaymentsModule } from './modules/payments/payments.module';
|
|
import { SubscriptionsModule } from './modules/subscriptions/subscriptions.module';
|
|
import { OtpChallengeModule } from './modules/challenge/otp.challenge.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(),
|
|
OperatorsModule,
|
|
PaymentsModule,
|
|
SubscriptionsModule,
|
|
OtpChallengeModule
|
|
],
|
|
providers: [PrismaService],
|
|
exports: [PrismaService],
|
|
})
|
|
export class AppModule {}
|