Files
NodeBB/install/databases.js

83 lines
2.2 KiB
JavaScript
Raw Normal View History

2017-02-18 01:56:23 -07:00
'use strict';
2015-12-21 12:02:10 +02:00
var async = require('async');
var prompt = require('prompt');
var winston = require('winston');
2015-12-21 12:02:10 +02:00
var questions = {
redis: require('../src/database/redis').questions,
2017-02-17 19:31:21 -07:00
mongo: require('../src/database/mongo').questions,
2015-12-21 12:02:10 +02:00
};
module.exports = function (config, callback) {
2015-12-21 12:02:10 +02:00
async.waterfall([
function (next) {
winston.info('\nNow configuring ' + config.database + ' database:');
2015-12-21 12:02:10 +02:00
getDatabaseConfig(config, next);
},
function (databaseConfig, next) {
saveDatabaseConfig(config, databaseConfig, next);
2017-02-17 19:31:21 -07:00
},
2015-12-21 12:02:10 +02:00
], callback);
};
2015-12-21 12:02:10 +02:00
function getDatabaseConfig(config, callback) {
if (!config) {
return callback(new Error('aborted'));
}
2015-12-21 12:02:10 +02:00
if (config.database === 'redis') {
if (config['redis:host'] && config['redis:port']) {
2015-12-21 12:02:10 +02:00
callback(null, config);
} else {
2015-12-21 12:02:10 +02:00
prompt.get(questions.redis, callback);
}
2015-12-21 12:02:10 +02:00
} else if (config.database === 'mongo') {
2017-10-23 15:09:13 -04:00
if ((config['mongo:host'] && config['mongo:port']) || config['mongo:uri']) {
2015-12-21 12:02:10 +02:00
callback(null, config);
} else {
2015-12-21 12:02:10 +02:00
prompt.get(questions.mongo, callback);
}
} else {
2015-12-21 12:02:10 +02:00
return callback(new Error('unknown database : ' + config.database));
}
}
2015-12-21 12:02:10 +02:00
function saveDatabaseConfig(config, databaseConfig, callback) {
if (!databaseConfig) {
return callback(new Error('aborted'));
}
2014-05-20 14:44:50 -04:00
2015-12-21 12:02:10 +02:00
// Translate redis properties into redis object
if (config.database === 'redis') {
config.redis = {
host: databaseConfig['redis:host'],
port: databaseConfig['redis:port'],
password: databaseConfig['redis:password'],
2017-02-17 19:31:21 -07:00
database: databaseConfig['redis:database'],
2015-12-21 12:02:10 +02:00
};
2015-12-21 12:02:10 +02:00
if (config.redis.host.slice(0, 1) === '/') {
delete config.redis.port;
}
2015-12-21 12:02:10 +02:00
} else if (config.database === 'mongo') {
config.mongo = {
host: databaseConfig['mongo:host'],
port: databaseConfig['mongo:port'],
username: databaseConfig['mongo:username'],
password: databaseConfig['mongo:password'],
2017-02-17 19:31:21 -07:00
database: databaseConfig['mongo:database'],
2017-10-23 15:09:13 -04:00
uri: databaseConfig['mongo:uri'],
2015-12-21 12:02:10 +02:00
};
} else {
return callback(new Error('unknown database : ' + config.database));
}
var allQuestions = questions.redis.concat(questions.mongo);
for (var x = 0; x < allQuestions.length; x += 1) {
2015-12-21 12:02:10 +02:00
delete config[allQuestions[x].name];
}
callback(null, config);
2017-02-18 02:30:48 -07:00
}