app.module.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { Module } from '@nestjs/common';
  2. import { ConfigModule, ConfigService } from '@nestjs/config';
  3. import { ScheduleModule } from '@nestjs/schedule';
  4. import { RedisModule } from '@box/db/redis/redis.module';
  5. import { PrismaMongoModule } from './prisma/prisma-mongo.module';
  6. import { UserLoginModule } from './feature/user-login/user-login.module';
  7. import { RabbitmqConsumerModule } from './feature/rabbitmq/rabbitmq-consumer.module';
  8. import { StatsEventsModule } from './feature/stats-events/stats-events.module';
  9. import { StatsReportingModule } from './feature/stats-reporting/stats-reporting.module';
  10. import path from 'path';
  11. @Module({
  12. imports: [
  13. ConfigModule.forRoot({
  14. isGlobal: true,
  15. envFilePath: [path.resolve(process.cwd(), '.env')],
  16. }),
  17. ScheduleModule.forRoot(),
  18. // Global Redis module for score syncing
  19. RedisModule.forRootAsync({
  20. imports: [ConfigModule],
  21. inject: [ConfigService],
  22. useFactory: (configService: ConfigService) => ({
  23. host: configService.get<string>('REDIS_HOST') ?? '127.0.0.1',
  24. port: configService.get<number>('REDIS_PORT') ?? 6379,
  25. password: configService.get<string>('REDIS_PASSWORD'),
  26. db: configService.get<number>('REDIS_DB') ?? 0,
  27. keyPrefix: configService.get<string>('REDIS_KEY_PREFIX'),
  28. }),
  29. }),
  30. PrismaMongoModule,
  31. UserLoginModule,
  32. RabbitmqConsumerModule,
  33. StatsEventsModule,
  34. StatsReportingModule,
  35. ],
  36. })
  37. export class AppModule {}