From df5f3d185a29cf47d9ea9eb4e229355c0bda4d8e Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 14 Apr 2014 13:41:33 -0400 Subject: [PATCH] don't attempt to initialize db until we attempt to initialize --- src/database/level.js | 24 ++++++++++++++++-------- src/database/mongo.js | 41 +++++++++++++++++++++++++++++++++-------- src/database/redis.js | 38 ++++++++++++++++++++++++++++++-------- 3 files changed, 79 insertions(+), 24 deletions(-) diff --git a/src/database/level.js b/src/database/level.js index 5674f6dbf7..1ff95df15c 100644 --- a/src/database/level.js +++ b/src/database/level.js @@ -21,16 +21,24 @@ connectLevel, db; - try { - levelup = require('levelup'); - leveldown = require('leveldown'); - connectLevel = require('connect-leveldb')(express); - } catch (err) { - winston.error('Unable to initialize Level DB! Is Level DB installed? Error :' + err.message); - process.exit(); - } + module.questions = [ + { + name: "level:database", + description: "Enter the path to your Level database", + 'default': nconf.get('level:database') || '/var/level/nodebb' + } + ]; module.init = function(callback) { + try { + levelup = require('levelup'); + leveldown = require('leveldown'); + connectLevel = require('connect-leveldb')(express); + } catch (err) { + winston.error('Unable to initialize Level DB! Is Level DB installed? Error :' + err.message); + process.exit(); + } + if (db) { if(typeof callback === 'function') { callback(); diff --git a/src/database/mongo.js b/src/database/mongo.js index 368bfae918..508ce72c7b 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -11,16 +11,41 @@ mongoClient, mongoStore; - try { - mongoClient = require('mongodb').MongoClient; - mongoStore = require('connect-mongo')(express); - } catch (err) { - winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); - process.exit(); - } - + module.questions = [ + { + name: 'mongo:host', + description: 'Host IP or address of your MongoDB instance', + 'default': nconf.get('mongo:host') || '127.0.0.1' + }, + { + name: 'mongo:port', + description: 'Host port of your MongoDB instance', + 'default': nconf.get('mongo:port') || 27017 + }, + { + name: 'mongo:username', + description: 'MongoDB username' + }, + { + name: 'mongo:password', + description: 'Password of your MongoDB database' + }, + { + name: "mongo:database", + description: "Which database to use", + 'default': nconf.get('mongo:database') || 0 + } + ]; module.init = function(callback) { + try { + mongoClient = require('mongodb').MongoClient; + mongoStore = require('connect-mongo')(express); + } catch (err) { + winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); + process.exit(); + } + mongoClient.connect('mongodb://'+ nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'), function(err, _db) { if(err) { winston.error("NodeBB could not connect to your Mongo database. Mongo returned the following error: " + err.message); diff --git a/src/database/redis.js b/src/database/redis.js index 879c0c7705..06a354307a 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -15,16 +15,38 @@ postSearch, topicSearch; - try { - redis = require('redis'); - connectRedis = require('connect-redis')(express); - reds = require('reds'); - } catch (err) { - winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message); - process.exit(); - } + module.questions = [ + { + name: 'redis:host', + description: 'Host IP or address of your Redis instance', + 'default': nconf.get('redis:host') || '127.0.0.1' + }, + { + name: 'redis:port', + description: 'Host port of your Redis instance', + 'default': nconf.get('redis:port') || 6379 + }, + { + name: 'redis:password', + description: 'Password of your Redis database' + }, + { + name: "redis:database", + description: "Which database to use (0..n)", + 'default': nconf.get('redis:database') || 0 + } + ]; module.init = function(callback) { + try { + redis = require('redis'); + connectRedis = require('connect-redis')(express); + reds = require('reds'); + } catch (err) { + winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message); + process.exit(); + } + if (redis_socket_or_host && redis_socket_or_host.indexOf('/')>=0) { /* If redis.host contains a path name character, use the unix dom sock connection. ie, /tmp/redis.sock */ redisClient = redis.createClient(nconf.get('redis:host'));