import * as path from 'path'
-
-import { database as db } from './database'
+import { readdirPromise } from '../helpers/core-utils'
+import { logger } from '../helpers/logger'
import { LAST_MIGRATION_VERSION } from './constants'
-import { logger, readdirPromise } from '../helpers'
+import { sequelizeTypescript } from './database'
async function migrate () {
- const tables = await db.sequelize.getQueryInterface().showAllTables()
+ const tables = await sequelizeTypescript.getQueryInterface().showAllTables()
// No tables, we don't need to migrate anything
// The installer will do that
if (tables.length === 0) return
- let actualVersion = await db.Application.loadMigrationVersion()
+ let actualVersion: number = null
+
+ const [ rows ] = await sequelizeTypescript.query('SELECT "migrationVersion" FROM "application"')
+ if (rows && rows[0] && rows[0].migrationVersion) {
+ actualVersion = rows[0].migrationVersion
+ }
+
if (actualVersion === null) {
- await db.Application.create({ migrationVersion: 0 })
+ await sequelizeTypescript.query('INSERT INTO "application" ("migrationVersion") VALUES (0)')
actualVersion = 0
}
const migrationScripts = await getMigrationScripts()
for (const migrationScript of migrationScripts) {
- await executeMigration(actualVersion, migrationScript)
+ try {
+ await executeMigration(actualVersion, migrationScript)
+ } catch (err) {
+ logger.error('Cannot execute migration %s.', migrationScript.version, { err })
+ process.exit(-1)
+ }
}
logger.info('Migrations finished. New migration version schema: %s', LAST_MIGRATION_VERSION)
const migrationScript = require(path.join(__dirname, 'migrations', migrationScriptName))
- await db.sequelize.transaction(async t => {
+ return sequelizeTypescript.transaction(async t => {
const options = {
transaction: t,
- queryInterface: db.sequelize.getQueryInterface(),
- sequelize: db.sequelize,
- db
+ queryInterface: sequelizeTypescript.getQueryInterface(),
+ sequelize: sequelizeTypescript
}
await migrationScript.up(options)
// Update the new migration version
- await db.Application.updateMigrationVersion(versionScript, t)
+ await sequelizeTypescript.query('UPDATE "application" SET "migrationVersion" = ' + versionScript, { transaction: t })
})
}