dcb-service-core-api/src/app.module.ts
Mamadou Khoussa [028918 DSI/DAC/DIF/DS] c479637d04 first commit
2025-10-21 23:47:31 +00:00

64 lines
2.1 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 { 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 {}