-
Notifications
You must be signed in to change notification settings - Fork 95
/
bull.module.ts
59 lines (55 loc) · 1.68 KB
/
bull.module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { DynamicModule, Module, OnModuleInit, Logger } from '@nestjs/common';
import { BullModuleOptions, BullModuleAsyncOptions } from './bull.interfaces';
import {
createQueueOptionProviders,
createQueueProviders,
createAsyncQueueOptionsProviders,
} from './bull.providers';
import { BullExplorer } from './bull.explorer';
@Module({})
export class BullModule implements OnModuleInit {
static forRoot(
options: BullModuleOptions | BullModuleOptions[],
): DynamicModule {
const queueProviders = createQueueProviders([].concat(options));
const queueOptionProviders = createQueueOptionProviders([].concat(options));
return {
module: BullModule,
providers: [
...queueOptionProviders,
...queueProviders,
BullExplorer,
{ provide: Logger, useValue: new Logger('BullModule') },
],
exports: queueProviders,
};
}
static forRootAsync(
options: BullModuleAsyncOptions | BullModuleAsyncOptions[],
): DynamicModule {
const optionsArr = [].concat(options);
const queueProviders = createQueueProviders(optionsArr);
const queueOptionProviders = createAsyncQueueOptionsProviders(optionsArr);
const imports =
optionsArr
.map(option => option.imports)
.reduce((acc = [], i) => {
acc.push(i);
}) || [];
return {
imports,
module: BullModule,
providers: [
...queueOptionProviders,
...queueProviders,
BullExplorer,
{ provide: Logger, useValue: new Logger('BullModule') },
],
exports: queueProviders,
};
}
constructor(private readonly explorer: BullExplorer) {}
onModuleInit() {
this.explorer.explore();
}
}