* feat: add stylistic eslint plugin * feat: add missing line return * feat: secure line-break style * feat: disallow break before else * feat: line between class members * feat: better new line lint rule
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { DynamicModule, Global } from '@nestjs/common';
|
|
|
|
import { MessageQueueDriver } from 'src/integrations/message-queue/drivers/interfaces/message-queue-driver.interface';
|
|
import { MessageQueueType } from 'src/integrations/environment/interfaces/message-queue.interface';
|
|
|
|
import { MessageQueueModuleAsyncOptions } from 'src/integrations/message-queue/interfaces';
|
|
import {
|
|
QUEUE_DRIVER,
|
|
MessageQueues,
|
|
} from 'src/integrations/message-queue/message-queue.constants';
|
|
import { PgBossDriver } from 'src/integrations/message-queue/drivers/pg-boss.driver';
|
|
import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service';
|
|
import { BullMQDriver } from 'src/integrations/message-queue/drivers/bullmq.driver';
|
|
|
|
@Global()
|
|
export class MessageQueueModule {
|
|
static forRoot(options: MessageQueueModuleAsyncOptions): DynamicModule {
|
|
const providers = [
|
|
{
|
|
provide: MessageQueues.taskAssignedQueue,
|
|
useFactory: (driver: MessageQueueDriver) => {
|
|
return new MessageQueueService(
|
|
driver,
|
|
MessageQueues.taskAssignedQueue,
|
|
);
|
|
},
|
|
inject: [QUEUE_DRIVER],
|
|
},
|
|
{
|
|
provide: QUEUE_DRIVER,
|
|
useFactory: async (...args: any[]) => {
|
|
const config = await options.useFactory(...args);
|
|
|
|
if (config.type === MessageQueueType.PgBoss) {
|
|
const boss = new PgBossDriver(config.options);
|
|
|
|
await boss.init();
|
|
|
|
return boss;
|
|
}
|
|
|
|
return new BullMQDriver(config.options);
|
|
},
|
|
inject: options.inject || [],
|
|
},
|
|
];
|
|
|
|
return {
|
|
module: MessageQueueModule,
|
|
imports: options.imports || [],
|
|
providers,
|
|
exports: [MessageQueues.taskAssignedQueue],
|
|
};
|
|
}
|
|
}
|