3 const eachSeries
= require('async/eachSeries')
4 const mongoose
= require('mongoose')
5 const path
= require('path')
7 const constants
= require('./constants')
8 const logger
= require('../helpers/logger')
10 const Application
= mongoose
.model('Application')
16 function migrate (callback
) {
17 Application
.loadMongoSchemaVersion(function (err
, actualVersion
) {
18 if (err
) return callback(err
)
20 // If there are a new mongo schemas
21 if (!actualVersion
|| actualVersion
< constants
.LAST_MONGO_SCHEMA_VERSION
) {
22 logger
.info('Begin migrations.')
24 eachSeries(constants
.MONGO_MIGRATION_SCRIPTS
, function (entity
, callbackEach
) {
25 const versionScript
= entity
.version
27 // Do not execute old migration scripts
28 if (versionScript
<= actualVersion
) return callbackEach(null)
30 // Load the migration module and run it
31 const migrationScriptName
= entity
.script
32 logger
.info('Executing %s migration script.', migrationScriptName
)
34 const migrationScript
= require(path
.join(__dirname
, 'migrations', migrationScriptName
))
35 migrationScript
.up(function (err
) {
36 if (err
) return callbackEach(err
)
38 // Update the new mongo version schema
39 Application
.updateMongoSchemaVersion(versionScript
, callbackEach
)
42 if (err
) return callback(err
)
44 logger
.info('Migrations finished. New mongo version schema: %s', constants
.LAST_MONGO_SCHEMA_VERSION
)
53 // ---------------------------------------------------------------------------
55 module
.exports
= migrator