app.module.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 path from 'path';
  10. @Module({
  11. imports: [
  12. ConfigModule.forRoot({
  13. isGlobal: true,
  14. envFilePath: [path.resolve(process.cwd(), '.env')],
  15. }),
  16. ScheduleModule.forRoot(),
  17. // Global Redis module for score syncing
  18. RedisModule.forRootAsync({
  19. imports: [ConfigModule],
  20. inject: [ConfigService],
  21. useFactory: (configService: ConfigService) => ({
  22. host: configService.get<string>('REDIS_HOST') ?? '127.0.0.1',
  23. port: configService.get<number>('REDIS_PORT') ?? 6379,
  24. password: configService.get<string>('REDIS_PASSWORD'),
  25. db: configService.get<number>('REDIS_DB') ?? 0,
  26. keyPrefix: configService.get<string>('REDIS_KEY_PREFIX'),
  27. }),
  28. }),
  29. PrismaMongoModule,
  30. UserLoginModule,
  31. RabbitmqConsumerModule,
  32. StatsEventsModule,
  33. ],
  34. })
  35. export class AppModule {}