@@ -4,6 +4,7 @@ const getenv = require('getenv');
4
4
const dotenv = require ( 'dotenv' ) ;
5
5
const awilix = require ( 'awilix' ) ;
6
6
const application = require ( './lib/application' ) ;
7
+ const grayscaleProcessor = require ( './lib/grayscale-processor' ) ;
7
8
const logger = require ( './loggers/logger' ) ;
8
9
const mongo = require ( './datasources/mongo' ) ;
9
10
const container = awilix . createContainer ( ) ;
@@ -13,28 +14,37 @@ module.exports = container;
13
14
14
15
let opts = {
15
16
formatName : 'camelCase' ,
16
- lifetime : awilix . Lifetime . SCOPED
17
+ registrationOptions : {
18
+ lifetime : awilix . Lifetime . SCOPED
19
+ }
17
20
} ;
18
21
19
22
container
20
23
. loadModules ( [
21
24
'controllers/*.js' ,
22
- 'datasources/mongo/models/*.js' ,
23
25
'datasources/mongo/repositories/*.js' ,
24
26
'interface/http/routes/*.js'
25
27
] , opts ) ;
26
28
27
29
container
28
30
. registerClass ( {
29
31
application : [ application , { lifetime : awilix . Lifetime . SINGLETON } ] ,
32
+ grayscaleProcessor : [ grayscaleProcessor , { lifetime : awilix . Lifetime . SINGLETON } ]
30
33
} )
31
34
. registerFunction ( {
32
- logger : [ logger , { lifetime : awilix . Lifetime . SINGLETON } ]
35
+ logger : [ logger , { lifetime : awilix . Lifetime . SINGLETON } ] ,
36
+ database : [ mongo , { lifetime : awilix . Lifetime . SINGLETON } ]
33
37
} )
38
+ . loadModules (
39
+ [ 'datasources/mongo/models/*.js' ] , {
40
+ formatName : 'camelCase' ,
41
+ registrationOptions : {
42
+ lifetime : awilix . Lifetime . TRANSIENT
43
+ }
44
+ } )
34
45
// TODO: need abstract storages, config classes
35
46
. registerValue ( {
36
- configs : getenv ,
37
- database : mongo
47
+ configs : getenv
38
48
} ) ;
39
49
40
50
// container
0 commit comments