X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Finitializers%2Fmigrator.js;h=8c67903add5cdc8d5fc10c03478827e37d84de0c;hb=5804c0db337ecf492fc61b98a3de7b730a0d8ce3;hp=233ee2bddf294e2be4a21c86125a31db13db44cf;hpb=c1a7ab7f04fdb1601cf1e41c4e372dbd3c81f3de;p=github%2FChocobozzz%2FPeerTube.git 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 @@ 'use strict' +const waterfall = require('async/waterfall') const eachSeries = require('async/eachSeries') const fs = require('fs') const path = require('path') @@ -12,30 +13,52 @@ const migrator = { migrate: migrate } -function migrate (callback) { - db.Application.loadMigrationVersion(function (err, actualVersion) { - if (err) return callback(err) +function migrate (finalCallback) { + waterfall([ + + function checkApplicationTableExists (callback) { + db.sequelize.getQueryInterface().showAllTables().asCallback(function (err, tables) { + if (err) return callback(err) + + // No tables, we don't need to migrate anything + // The installer will do that + if (tables.length === 0) return finalCallback(null) + + return callback(null) + }) + }, + + function loadMigrationVersion (callback) { + db.Application.loadMigrationVersion(callback) + }, - // If there are a new migration scripts - if (actualVersion < constants.LAST_MIGRATION_VERSION) { + function abortMigrationIfNotNeeded (actualVersion, callback) { + // No need migrations + if (actualVersion >= constants.LAST_MIGRATION_VERSION) return finalCallback(null) + + return callback(null, actualVersion) + }, + + function getMigrations (actualVersion, callback) { + // If there are a new migration scripts logger.info('Begin migrations.') getMigrationScripts(function (err, migrationScripts) { - if (err) return callback(err) + return callback(err, actualVersion, migrationScripts) + }) + }, - eachSeries(migrationScripts, function (entity, callbackEach) { - executeMigration(actualVersion, entity, callbackEach) - }, function (err) { - if (err) return callback(err) + function doMigrations (actualVersion, migrationScripts, callback) { + eachSeries(migrationScripts, function (entity, callbackEach) { + executeMigration(actualVersion, entity, callbackEach) + }, function (err) { + if (err) return callback(err) - logger.info('Migrations finished. New migration version schema: %s', constants.LAST_MIGRATION_VERSION) - return callback(null) - }) + logger.info('Migrations finished. New migration version schema: %s', constants.LAST_MIGRATION_VERSION) + return callback(null) }) - } else { - return callback(null) } - }) + ], finalCallback) } // --------------------------------------------------------------------------- @@ -81,6 +104,7 @@ function executeMigration (actualVersion, entity, callback) { const options = { transaction: t, queryInterface: db.sequelize.getQueryInterface(), + sequelize: db.sequelize, Sequelize: db.Sequelize } migrationScript.up(options, function (err) {