From 714be17fa6bea04cc05f1066083bb5ff2ba09f75 Mon Sep 17 00:00:00 2001 From: Charles Pick Date: Wed, 26 Nov 2014 12:18:40 +0000 Subject: [PATCH 1/2] guarantee migration order --- lib/migration/manager.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/migration/manager.js b/lib/migration/manager.js index b1ee49f..a50b823 100644 --- a/lib/migration/manager.js +++ b/lib/migration/manager.js @@ -81,8 +81,7 @@ MigrationManager.prototype.create = function (config) { * @return {String} The generated JavaScript source code. */ MigrationManager.prototype.generateMigration = function (config) { - var content = 'exports.name = ' + JSON.stringify(config.name) + ';\n\n'; - content += 'exports.db = ' + JSON.stringify(config.db) + ';\n\n'; + var content = '"use strict";\nexports.name = ' + JSON.stringify(config.name) + ';\n\n'; content += 'exports.up = function (db) {\n // @todo implementation\n};\n\n'; content += 'exports.down = function (db) {\n // @todo implementation\n};\n\n'; return content; @@ -103,10 +102,8 @@ MigrationManager.prototype.list = function () { this.listApplied() ]); }) - .then(function (args) { - var available = args[0], - applied = args[1], - pending = [], + .spread(function (available, applied) { + var pending = [], totalAvailable = available.length, totalApplied = applied.length, item, other, i, j, found; @@ -126,6 +123,10 @@ MigrationManager.prototype.list = function () { } } return pending; + }) + .then(function (migrations) { + migrations.sort(); + return migrations; }); }; @@ -226,6 +227,7 @@ MigrationManager.prototype.down = function (limit) { return item.name; }) .then(function (items) { + items.sort(); return items.reverse(); }) .filter(function (item, index) { @@ -302,4 +304,5 @@ MigrationManager.prototype.revertMigration = function (name) { }) .return(result); }); -}; \ No newline at end of file +}; + From 1330b9439e14585227034aa6dfcf0c550339e74b Mon Sep 17 00:00:00 2001 From: Charles Pick Date: Wed, 26 Nov 2014 12:22:55 +0000 Subject: [PATCH 2/2] assert migration order --- test/migration/manager-test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/migration/manager-test.js b/test/migration/manager-test.js index 80c737e..82058b2 100644 --- a/test/migration/manager-test.js +++ b/test/migration/manager-test.js @@ -66,6 +66,10 @@ describe("Migration Manager", function () { return this.manager.list() .then(function (migrations) { migrations.length.should.equal(2); + migrations.should.eql([ + 'm20140318_014253_my_test_migration', + 'm20140318_014300_my_second_test_migration' + ]); }); }) });