import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { ScheduleModule } from '@nestjs/schedule'; import { RedisModule } from '@box/db/redis/redis.module'; import { PrismaMongoModule } from './prisma/prisma-mongo.module'; import { UserLoginModule } from './feature/user-login/user-login.module'; import { RabbitmqConsumerModule } from './feature/rabbitmq/rabbitmq-consumer.module'; import { StatsEventsModule } from './feature/stats-events/stats-events.module'; import { StatsReportingModule } from './feature/stats-reporting/stats-reporting.module'; import path from 'path'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, envFilePath: [path.resolve(process.cwd(), '.env')], }), ScheduleModule.forRoot(), // Global Redis module for score syncing RedisModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ host: configService.get('REDIS_HOST') ?? '127.0.0.1', port: configService.get('REDIS_PORT') ?? 6379, password: configService.get('REDIS_PASSWORD'), db: configService.get('REDIS_DB') ?? 0, keyPrefix: configService.get('REDIS_KEY_PREFIX'), }), }), PrismaMongoModule, UserLoginModule, RabbitmqConsumerModule, StatsEventsModule, StatsReportingModule, ], }) export class AppModule {}