1
1
import { DynamicModule , Module , Provider } from '@nestjs/common' ;
2
+ import { DiscoveryModule } from '@nestjs/core' ;
2
3
import {
3
4
GraphileWorkerAsyncConfiguration ,
4
- GraphileWorkerConfiguration ,
5
5
GraphileWorkerConfigurationFactory ,
6
+ RunnerOptionWithoutEvents ,
6
7
} from './config.interface' ;
8
+ import {
9
+ ConfigurationService ,
10
+ CONFIGURATION_SERVICE_KEY ,
11
+ } from './configuration.service' ;
7
12
import { GraphileWorkerService } from './graphile-worker.service' ;
13
+ import { ListenerExplorerService } from './listener-explorer.service' ;
14
+ import { MetadataAccessorService } from './metadata-accessor.service' ;
8
15
9
16
export const GRAPHILE_WORKER_TOKEN = Symbol . for ( 'NestJsGraphileWorker' ) ;
10
17
18
+ const internalsProviders = [
19
+ MetadataAccessorService ,
20
+ ListenerExplorerService ,
21
+ GraphileWorkerService ,
22
+ ] ;
23
+
24
+ const internalsModules = [ DiscoveryModule ] ;
25
+
11
26
@Module ( {
12
27
providers : [ GraphileWorkerService ] ,
13
28
exports : [ GraphileWorkerService ] ,
@@ -27,17 +42,20 @@ export class GraphileWorkerModule {
27
42
* }),
28
43
* ```
29
44
*/
30
- static forRoot ( config : GraphileWorkerConfiguration ) : DynamicModule {
31
- const graphileWorkerService : Provider = {
32
- provide : GraphileWorkerService ,
33
- useValue : new GraphileWorkerService ( config ) ,
45
+ static forRoot ( config : RunnerOptionWithoutEvents ) : DynamicModule {
46
+ const configurationService = new ConfigurationService ( config ) ;
47
+
48
+ const graphileConfigurationServiceProvider : Provider = {
49
+ provide : CONFIGURATION_SERVICE_KEY ,
50
+ useValue : configurationService ,
34
51
} ;
35
52
36
53
return {
37
54
global : true ,
55
+ imports : internalsModules ,
38
56
module : GraphileWorkerModule ,
39
- providers : [ graphileWorkerService ] ,
40
- exports : [ graphileWorkerService ] ,
57
+ providers : [ graphileConfigurationServiceProvider , ... internalsProviders ] ,
58
+ exports : [ GraphileWorkerService ] ,
41
59
} ;
42
60
}
43
61
@@ -67,8 +85,8 @@ export class GraphileWorkerModule {
67
85
return {
68
86
global : true ,
69
87
module : GraphileWorkerModule ,
70
- imports : asyncConfig . imports ,
71
- providers,
88
+ imports : [ ... asyncConfig . imports , ... internalsModules ] ,
89
+ providers : [ ... providers , ... internalsProviders ] ,
72
90
exports : providers ,
73
91
} ;
74
92
}
@@ -84,23 +102,22 @@ export class GraphileWorkerModule {
84
102
) : Provider {
85
103
if ( options . useFactory ) {
86
104
return {
87
- provide : GraphileWorkerService ,
105
+ provide : CONFIGURATION_SERVICE_KEY ,
88
106
useFactory : async ( ...args : any [ ] ) => {
89
- const configuration = await options . useFactory ( ...args ) ;
90
- return new GraphileWorkerService ( configuration ) ;
107
+ const config = await options . useFactory ( ...args ) ;
108
+ return new ConfigurationService ( config ) ;
91
109
} ,
92
110
inject : options . inject || [ ] ,
93
111
} ;
94
112
}
95
113
96
114
return {
97
- provide : GraphileWorkerService ,
115
+ provide : CONFIGURATION_SERVICE_KEY ,
98
116
useFactory : async (
99
117
optionsFactory : GraphileWorkerConfigurationFactory ,
100
118
) => {
101
- const configuration = await optionsFactory . createSharedConfiguration ( ) ;
102
-
103
- return new GraphileWorkerService ( configuration ) ;
119
+ const config = await optionsFactory . createSharedConfiguration ( ) ;
120
+ return new ConfigurationService ( config ) ;
104
121
} ,
105
122
inject : options . inject ,
106
123
} ;
0 commit comments