55 lines
2.3 KiB
TypeScript
55 lines
2.3 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { MikroOrmModule } from '@mikro-orm/nestjs';
|
|
import { BullModule } from '@nestjs/bullmq';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { Notification } from './entities/notification.entity';
|
|
import { NotificationPreference } from './entities/notification-preference.entity';
|
|
import { NotificationService } from './services/notification.service';
|
|
import { NotificationPreferenceService } from './services/notification-preference.service';
|
|
import { NotificationQueueService } from './services/notification-queue.service';
|
|
import { PushNotificationService } from './services/push-notification.service';
|
|
import { SmsProcessor } from './processors/sms.processor';
|
|
import { PushProcessor } from './processors/push.processor';
|
|
import { NotificationsController } from './controllers/notifications.controller';
|
|
import { User } from '../users/entities/user.entity';
|
|
import { Restaurant } from '../restaurants/entities/restaurant.entity';
|
|
import { AuthModule } from '../auth/auth.module';
|
|
import { ConfigService } from '@nestjs/config';
|
|
import { NotificationQueueNameEnum } from './constants/queue';
|
|
import { UtilsModule } from '../utils/utils.module';
|
|
import { NotificationsGateway } from './notifications.gateway';
|
|
import { WsAdminAuthGuard } from './guards/ws-admin-auth.guard';
|
|
|
|
@Module({
|
|
imports: [
|
|
AuthModule,
|
|
UtilsModule,
|
|
JwtModule,
|
|
MikroOrmModule.forFeature([Notification, NotificationPreference, User, Restaurant]),
|
|
BullModule.registerQueue({ name: NotificationQueueNameEnum.SMS }, { name: NotificationQueueNameEnum.PUSH }),
|
|
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
|
|
},
|
|
}),
|
|
}),
|
|
],
|
|
controllers: [NotificationsController],
|
|
providers: [
|
|
NotificationService,
|
|
NotificationPreferenceService,
|
|
NotificationQueueService,
|
|
PushNotificationService,
|
|
PushProcessor,
|
|
SmsProcessor,
|
|
NotificationsGateway,
|
|
WsAdminAuthGuard,
|
|
],
|
|
exports: [NotificationService, NotificationPreferenceService, NotificationQueueService, PushNotificationService],
|
|
})
|
|
export class NotificationsModule {}
|