· 6 years ago · Jul 21, 2019, 12:02 PM
1#!/usr/bin/env node
2const FileStore = require('migrate/lib/file-store')
3
4const db = require('../lib/db')
5const migrate = require('../lib/migrate')
6const options = require('../lib/options')
7
8const createMigration = `CREATE TABLE IF NOT EXISTS migrations (
9 id serial PRIMARY KEY,
10 data json NOT NULL
11)`
12
13const select = 'select * from migrations limit 1'
14
15const getMigrateFile = () => {
16 return new Promise((resolve, reject) => {
17 new FileStore(options.migrateStatePath).load((err, store) => {
18 if (err) return reject(err)
19 return resolve(store)
20 })
21 })
22}
23
24db.none(createMigration)
25 .then(() => Promise.all([db.oneOrNone(select), getMigrateFile()]))
26 .then(([qResult, migrateFile]) => {
27 if (!qResult && migrateFile) {
28 return db.none('insert into migrations (id, data) values (1, $1)', [migrateFile])
29 }
30 })
31 .then(() => migrate.run())
32 .then(() => {
33 console.log('DB Migration succeeded.')
34 process.exit(0)
35 })
36 .catch(err => {
37 console.error('DB Migration failed: %s', err)
38 process.exit(0)
39 })