mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-23 18:26:32 -05:00
7b9f9a487b
Signed-off-by: David Mehren <git@herrmehren.de>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { Sequelize } from 'sequelize-typescript'
|
|
import { cloneDeep } from 'lodash'
|
|
import * as path from 'path'
|
|
import { Author } from './author'
|
|
import { Note } from './note'
|
|
import { Revision } from './revision'
|
|
import { Temp } from './temp'
|
|
import { User } from './user'
|
|
import { logger } from '../logger'
|
|
import { config } from '../config'
|
|
import Umzug from 'umzug'
|
|
import SequelizeTypes from 'sequelize'
|
|
|
|
const dbconfig = cloneDeep(config.db)
|
|
dbconfig.logging = config.debug ? (data): void => {
|
|
logger.info(data)
|
|
} : false
|
|
|
|
export let sequelize: Sequelize
|
|
|
|
// Heroku specific
|
|
if (config.dbURL) {
|
|
sequelize = new Sequelize(config.dbURL, dbconfig)
|
|
} else {
|
|
sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password, dbconfig)
|
|
}
|
|
|
|
const umzug = new Umzug({
|
|
migrations: {
|
|
path: path.resolve(__dirname, '..', 'migrations'),
|
|
params: [
|
|
sequelize.getQueryInterface(),
|
|
SequelizeTypes
|
|
]
|
|
},
|
|
// Required wrapper function required to prevent winstion issue
|
|
// https://github.com/winstonjs/winston/issues/1577
|
|
logging: (message): void => {
|
|
logger.info(message)
|
|
},
|
|
storage: 'sequelize',
|
|
storageOptions: {
|
|
sequelize: sequelize
|
|
}
|
|
})
|
|
|
|
export async function runMigrations (): Promise<void> {
|
|
// 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')
|
|
}
|
|
|
|
sequelize.addModels([Author, Note, Revision, Temp, User])
|
|
|
|
export { Author, Note, Revision, Temp, User }
|