diff options
Diffstat (limited to 'server/initializers/migrator.js')
-rw-r--r-- | server/initializers/migrator.js | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/server/initializers/migrator.js b/server/initializers/migrator.js index 233ee2bdd..8c67903ad 100644 --- a/server/initializers/migrator.js +++ b/server/initializers/migrator.js | |||
@@ -1,5 +1,6 @@ | |||
1 | 'use strict' | 1 | 'use strict' |
2 | 2 | ||
3 | const waterfall = require('async/waterfall') | ||
3 | const eachSeries = require('async/eachSeries') | 4 | const eachSeries = require('async/eachSeries') |
4 | const fs = require('fs') | 5 | const fs = require('fs') |
5 | const path = require('path') | 6 | const path = require('path') |
@@ -12,30 +13,52 @@ const migrator = { | |||
12 | migrate: migrate | 13 | migrate: migrate |
13 | } | 14 | } |
14 | 15 | ||
15 | function migrate (callback) { | 16 | function migrate (finalCallback) { |
16 | db.Application.loadMigrationVersion(function (err, actualVersion) { | 17 | waterfall([ |
17 | if (err) return callback(err) | 18 | |
19 | function checkApplicationTableExists (callback) { | ||
20 | db.sequelize.getQueryInterface().showAllTables().asCallback(function (err, tables) { | ||
21 | if (err) return callback(err) | ||
22 | |||
23 | // No tables, we don't need to migrate anything | ||
24 | // The installer will do that | ||
25 | if (tables.length === 0) return finalCallback(null) | ||
26 | |||
27 | return callback(null) | ||
28 | }) | ||
29 | }, | ||
30 | |||
31 | function loadMigrationVersion (callback) { | ||
32 | db.Application.loadMigrationVersion(callback) | ||
33 | }, | ||
18 | 34 | ||
19 | // If there are a new migration scripts | 35 | function abortMigrationIfNotNeeded (actualVersion, callback) { |
20 | if (actualVersion < constants.LAST_MIGRATION_VERSION) { | 36 | // No need migrations |
37 | if (actualVersion >= constants.LAST_MIGRATION_VERSION) return finalCallback(null) | ||
38 | |||
39 | return callback(null, actualVersion) | ||
40 | }, | ||
41 | |||
42 | function getMigrations (actualVersion, callback) { | ||
43 | // If there are a new migration scripts | ||
21 | logger.info('Begin migrations.') | 44 | logger.info('Begin migrations.') |
22 | 45 | ||
23 | getMigrationScripts(function (err, migrationScripts) { | 46 | getMigrationScripts(function (err, migrationScripts) { |
24 | if (err) return callback(err) | 47 | return callback(err, actualVersion, migrationScripts) |
48 | }) | ||
49 | }, | ||
25 | 50 | ||
26 | eachSeries(migrationScripts, function (entity, callbackEach) { | 51 | function doMigrations (actualVersion, migrationScripts, callback) { |
27 | executeMigration(actualVersion, entity, callbackEach) | 52 | eachSeries(migrationScripts, function (entity, callbackEach) { |
28 | }, function (err) { | 53 | executeMigration(actualVersion, entity, callbackEach) |
29 | if (err) return callback(err) | 54 | }, function (err) { |
55 | if (err) return callback(err) | ||
30 | 56 | ||
31 | logger.info('Migrations finished. New migration version schema: %s', constants.LAST_MIGRATION_VERSION) | 57 | logger.info('Migrations finished. New migration version schema: %s', constants.LAST_MIGRATION_VERSION) |
32 | return callback(null) | 58 | return callback(null) |
33 | }) | ||
34 | }) | 59 | }) |
35 | } else { | ||
36 | return callback(null) | ||
37 | } | 60 | } |
38 | }) | 61 | ], finalCallback) |
39 | } | 62 | } |
40 | 63 | ||
41 | // --------------------------------------------------------------------------- | 64 | // --------------------------------------------------------------------------- |
@@ -81,6 +104,7 @@ function executeMigration (actualVersion, entity, callback) { | |||
81 | const options = { | 104 | const options = { |
82 | transaction: t, | 105 | transaction: t, |
83 | queryInterface: db.sequelize.getQueryInterface(), | 106 | queryInterface: db.sequelize.getQueryInterface(), |
107 | sequelize: db.sequelize, | ||
84 | Sequelize: db.Sequelize | 108 | Sequelize: db.Sequelize |
85 | } | 109 | } |
86 | migrationScript.up(options, function (err) { | 110 | migrationScript.up(options, function (err) { |