import { Module, forwardRef } from '@nestjs/common'; import { MikroOrmModule } from '@mikro-orm/nestjs'; import { BullModule } from '@nestjs/bullmq'; import { JwtModule } from '@nestjs/jwt'; import { NotificationQueueService } from './services/notification-queue.service'; import { SmsProcessor } from './processors/sms.processor'; import { AuthModule } from '../auth/auth.module'; import { ConfigService } from '@nestjs/config'; import { NotificationQueueNameEnum } from './constants/queue'; import { UtilsModule } from '../utils/utils.module'; import { AdminModule } from '../admin/admin.module'; import { SmsService } from './services/sms.service'; @Module({ imports: [ forwardRef(() => AuthModule), JwtModule, BullModule.registerQueue( { name: NotificationQueueNameEnum.SMS }, { name: NotificationQueueNameEnum.PUSH }, { name: NotificationQueueNameEnum.IN_APP }, ), BullModule.forRootAsync({ inject: [ConfigService], useFactory: (config: ConfigService) => ({ connection: { host: config.get('REDIS_HOST') || 'captain.dev.danakcorp.com', port: config.get('REDIS_PORT') || 50601, password: config.get('REDIS_PASSWORD'), // Pull from .env }, }), }), AdminModule, UtilsModule, ], controllers: [], providers: [ NotificationQueueService, SmsProcessor, SmsService, ], exports: [ NotificationQueueService, SmsService], }) export class NotificationsModule { }