-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
107 lines (92 loc) · 2.47 KB
/
index.js
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/**
*
* Author: Sandip Patel
* Description: create modular structure
*/
const async = require('async');
module.exports = sails => {
return {
injectConfigs: function(dir, cb) {
require(__dirname + '/src/configs')(sails, dir, cb);
},
injectPolicies: function(dir, cb) {
require(__dirname + '/src/policies')(sails, dir, cb);
},
injectModels: function(dir, cb) {
require(__dirname + '/src/models')(sails, dir, cb);
},
injectServices: function(dir, cb) {
require(__dirname + '/src/services')(sails, dir, cb);
},
injectControllers: function(dir, cb) {
require(__dirname + '/src/controllers')(sails, dir, cb);
},
inject: function(dir, next) {
let toLoad = [];
const self = this;
const callback = next || function() {};
const directories = {
models: dir + '/models',
configs: dir + '/configs',
services: dir + '/services',
policies: dir + '/policies',
controllers: dir + '/controllers',
};
const loadConfigs = next => {
self.injectConfigs(directories.configs, err => {
if (err) {
return next(err);
}
return next(null);
});
};
const loadPolicies = next => {
self.injectPolicies(directories.policies, err => {
if (err) {
return next(err);
}
return next(null);
});
};
const loadModels = next => {
self.injectModels(directories.models, err => {
if (err) {
return next(err);
}
return next(null);
});
};
const loadServices = next => {
self.injectServices(directories.services, err => {
if (err) {
return next(err);
}
return next(null);
});
};
const loadControllers = next => {
self.injectControllers(directories.controllers, err => {
if (err) {
return next(err);
}
return next(null);
});
};
// load second
toLoad.push(loadConfigs);
toLoad.push(loadPolicies);
// load after
toLoad.push(loadModels);
toLoad.push(loadServices);
toLoad.push(loadControllers);
async.waterfall(toLoad, err => {
if (err) {
sails.log.error(err);
return callback(err);
}
sails.log('module: ', dir, 'loaded');
return callback();
});
},
};
};