summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Mehren2021-02-27 21:33:05 +0100
committerDavid Mehren2021-02-27 21:33:05 +0100
commit0db862f3c9318f3e214d6b09604760a9844dcfd5 (patch)
tree4db476be820a6cd94136f238c693221c4d6db1d5 /lib
parent6186e0f48f3414e9de4ab5f864c2d153aa995c51 (diff)
Run database migrations automatically on startup
This commit removes the need for separate migrations with the sequelize-cli by running them with umzug on application startup. This is a port of #384 Co-authored-by: Sheogorath <sheogorath@shivering-isles.com> Signed-off-by: David Mehren <git@herrmehren.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/models/index.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/models/index.js b/lib/models/index.js
index e752a993..4558b25e 100644
--- a/lib/models/index.js
+++ b/lib/models/index.js
@@ -4,6 +4,7 @@ const fs = require('fs')
const path = require('path')
const Sequelize = require('sequelize')
const { cloneDeep } = require('lodash')
+const Umzug = require('umzug')
// core
const config = require('../config')
@@ -57,6 +58,36 @@ Object.keys(db).forEach(function (modelName) {
}
})
+const umzug = new Umzug({
+ migrations: {
+ path: path.resolve(__dirname, '..', 'migrations'),
+ params: [
+ sequelize.getQueryInterface(),
+ Sequelize.DataTypes
+ ]
+ },
+ // Required wrapper function required to prevent winstion issue
+ // https://github.com/winstonjs/winston/issues/1577
+ logging: message => {
+ logger.info(message)
+ },
+ storage: 'sequelize',
+ storageOptions: {
+ sequelize: sequelize
+ }
+})
+
+db.runMigrations = async function runMigrations () {
+ // checks migrations and run them if they are not already applied
+ // exit in case of unsuccessful migrations
+ await umzug.up().catch(error => {
+ logger.error(error)
+ logger.error('Database migration failed. Exiting…')
+ process.exit(1)
+ })
+ logger.info('All migrations performed successfully')
+}
+
db.sequelize = sequelize
db.Sequelize = Sequelize