fix migration so it doesn't error out on existing devices

This commit is contained in:
Josh Harvey 2017-12-19 18:55:14 +02:00
parent 2b3e49fdab
commit d3c2448a12
2 changed files with 29 additions and 5 deletions

View file

@ -1,12 +1,20 @@
const db = require('./db') const db = require('./db')
const migrateTools = require('./migrate-tools')
exports.up = function (next) { exports.up = function (next) {
return migrateTools.migrateNames()
.then(updateSql => {
const sql = [ const sql = [
'alter table devices add column name text not null' 'alter table devices add column name text',
updateSql,
'alter table devices alter column name set not null'
] ]
db.multi(sql, next)
return db.multi(sql, next)
})
} }
exports.down = function (next) { exports.down = function (next) {
next() const sql = ['alter table devices drop column name']
db.multi(sql, next)
} }

View file

@ -0,0 +1,16 @@
const pgp = require('pg-promise')()
const _ = require('lodash/fp')
const settingsLoader = require('../lib/settings-loader')
const machineLoader = require('../lib/machine-loader')
module.exports = {migrateNames}
function migrateNames () {
const cs = new pgp.helpers.ColumnSet(['device_id', 'name'], {table: 'devices'})
return settingsLoader.loadLatest()
.then(r => machineLoader.getMachineNames(r.config))
.then(_.map(r => ({device_id: r.deviceId, name: r.name})))
.then(data => pgp.helpers.update(data, cs))
}