From f861d44d55738f9f85f984c09a12b2fab5626806 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Fri, 6 Dec 2013 14:22:31 -0500 Subject: [PATCH] updated upgrade script to use mongo or redis --- app.js | 8 +++--- src/database.js | 11 ++++++-- src/database/mongo.js | 2 ++ src/install.js | 4 +-- src/upgrade.js | 63 ++++++++++++++++++++++++++++++++++++++----- 5 files changed, 74 insertions(+), 14 deletions(-) diff --git a/app.js b/app.js index 103a2d19e1..8defae9ab2 100644 --- a/app.js +++ b/app.js @@ -154,10 +154,12 @@ nconf.file({ file: __dirname + '/config.json' }); - meta = require('./src/meta.js'); + require('./src/database').init(function(err) { + meta = require('./src/meta.js'); - meta.configs.init(function () { - require('./src/upgrade').upgrade(); + meta.configs.init(function () { + require('./src/upgrade').upgrade(); + }); }); } else/* if (nconf.get('help') */{ winston.info('Usage: node app [options] [arguments]'); diff --git a/src/database.js b/src/database.js index 465cd3bcd5..47c76c30c1 100644 --- a/src/database.js +++ b/src/database.js @@ -1,6 +1,13 @@ -var nconf = require('nconf'); - db = require('./database/' + nconf.get('database')); +var nconf = require('nconf'), + databaseType = nconf.get('database'); + + if(!databaseType) { + winston.info('Database type not set! Run npm app --setup'); + process.exit(); + } + +var db = require('./database/' + databaseType); module.exports = db; \ No newline at end of file diff --git a/src/database/mongo.js b/src/database/mongo.js index 0d5387ff93..b31d99b558 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -20,6 +20,8 @@ process.exit(); } + module.client = db; + module.sessionStore = new mongoStore({ db: db }); diff --git a/src/install.js b/src/install.js index a695fe3b4d..f7583c81fb 100644 --- a/src/install.js +++ b/src/install.js @@ -295,9 +295,7 @@ var async = require('async'), }, next); }, function (next) { - // Upgrading schema - var Upgrade = require('./upgrade'); - Upgrade.upgrade(next); + require('./upgrade').upgrade(next); } ], function (err) { if (err) { diff --git a/src/upgrade.js b/src/upgrade.js index 49bedc2a2c..99657007f7 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -1,14 +1,11 @@ "use strict"; -var //db = require('./database'), - - // TODO: temp until upgrade is figured out with dbal, - RDB = require('./database/redis').client, - +var db = require('./database'), async = require('async'), winston = require('winston'), notifications = require('./notifications'), categories = require('./categories'), + nconf = require('nconf'), Upgrade = {}, schemaDate, thisSchemaDate; @@ -17,7 +14,7 @@ Upgrade.check = function(callback) { // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema var latestSchema = new Date(2013, 11, 2).getTime(); - RDB.get('schemaDate', function(err, value) { + db.get('schemaDate', function(err, value) { if (parseInt(value, 10) >= latestSchema) { callback(true); } else { @@ -27,6 +24,22 @@ Upgrade.check = function(callback) { }; Upgrade.upgrade = function(callback) { + var databaseType = nconf.get('database'); + + if(databaseType === 'redis') { + Upgrade.upgradeRedis(callback); + } else if(databaseType === 'mongo') { + Upgrade.upgradeMongo(callback); + } else { + winston.error('Unknown database type. Aborting upgrade'); + callback(new Error('unknown-database')); + } +}; + +Upgrade.upgradeRedis = function(callback) { + + var RDB = db.client; + winston.info('Beginning Redis database schema update'); async.series([ @@ -288,4 +301,42 @@ Upgrade.upgrade = function(callback) { }); }; +Upgrade.upgradeMongo = function(callback) { + var MDB = db.client; + + winston.info('Beginning Mongo database schema update'); + + async.series([ + function(next) { + db.get('schemaDate', function(err, value) { + console.log(schemaDate) + schemaDate = value; + thisSchemaDate = new Date(2013, 11, 6).getTime(); + next(); + }); + } + // Add new schema updates here + + ], function(err) { + if (!err) { + db.set('schemaDate', thisSchemaDate, function(err) { + if (!err) { + winston.info('[upgrade] Mongo schema update complete!'); + if (callback) { + callback(err); + } else { + process.exit(); + } + } else { + winston.error('[upgrade] Could not update NodeBB schema date!'); + process.exit(); + } + }); + } else { + winston.error('[upgrade] Errors were encountered while updating the NodeBB schema: ' + err.message); + process.exit(); + } + }); +} + module.exports = Upgrade; \ No newline at end of file