forked from NodeBB/NodeBB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase.js
56 lines (42 loc) · 1.43 KB
/
database.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
"use strict";
var nconf = require('nconf'),
primaryDBName = nconf.get('database'),
secondaryDBName = nconf.get('secondary_database'),
secondaryModules = nconf.get('secondary_db_modules'),
winston = require('winston'),
async = require('async'),
ALLOWED_MODULES = ['hash', 'list', 'sets', 'sorted'];
if(!primaryDBName) {
winston.info('Database type not set! Run ./nodebb setup');
process.exit();
}
function setupSecondaryDB() {
var secondaryDB = require('./database/' + secondaryDBName);
secondaryModules = secondaryModules.split(/,\s*/);
for (var module in secondaryModules) {
if (secondaryModules.hasOwnProperty(module) && ALLOWED_MODULES.indexOf(module) !== -1) {
primaryDB[module] = secondaryDB[module];
}
}
var primaryDBinit = primaryDB.init,
primaryDBclose = primaryDB.close,
primaryDBhelpers = primaryDB.helpers;
primaryDB.init = function(callback) {
async.parallel([primaryDBinit, secondaryDB.init], function(err, results) {
callback(err);
});
};
primaryDB.close = function(callback) {
async.parallel([primaryDBclose, secondaryDB.close], function(err, results) {
callback(err);
});
};
primaryDB.helpers = {};
primaryDB.helpers[primaryDBName] = primaryDBhelpers[primaryDBName];
primaryDB.helpers[secondaryDBName] = secondaryDB.helpers[secondaryDBName];
}
var primaryDB = require('./database/' + primaryDBName);
if (secondaryDBName && secondaryModules) {
setupSecondaryDB();
}
module.exports = primaryDB;