This commit is contained in:
Josh Harvey 2016-12-07 20:14:39 +02:00
parent 2b81dcd0ed
commit 89b7c95c8a
2 changed files with 54 additions and 7 deletions

44
bin/apply-defaults.js Normal file
View file

@ -0,0 +1,44 @@
const _ = require('lodash/fp')
// const db = require('../lib/db')
const settingsLoader = require('../lib/settings-loader')
const configManager = require('../lib/config-manager')
const schema = require('../lamassu-schema.json')
const newFields = []
settingsLoader.loadConfig()
.then(config => {
schema.groups.forEach(group => {
return group.fields.forEach(fieldCode => {
const field = schema.fields.find(r => r.code === fieldCode)
if (!field) throw new Error('No such field: ' + fieldCode)
if (_.isNil(field.default)) return
if (group.cryptoScope === 'specific' || group.machineScope === 'specific') return
const existing = configManager.scopedValue('global', 'global', fieldCode, config)
if (existing) return
return newFields.push({
fieldLocator: {
fieldScope: {
crypto: 'global',
machine: 'global'
},
code: fieldCode,
fieldType: field.fieldType,
fieldClass: field.fieldClass
},
fieldValue: {
fieldType: field.fieldType,
value: field.default
}
})
})
})
return settingsLoader.save(config.concat(newFields))
})
.then(() => pp(newFields))
.then(() => process.exit(0))
function pp (o) { console.log(require('util').inspect(o, {depth: null, colors: true})) }

View file

@ -5,14 +5,11 @@ const db = require('./db')
let settingsCache let settingsCache
function load () { function load () {
return Promise.all([ return Promise.all([loadConfig(), loadAccounts()])
db.one('select data from user_config where type=$1', 'config'), .then(function ([config, accounts]) {
loadAccounts()
])
.then(function ([data, accounts]) {
settingsCache = { settingsCache = {
config: data.data.config, config,
accounts: accounts accounts
} }
return settingsCache return settingsCache
@ -23,6 +20,11 @@ function load () {
}) })
} }
function loadConfig () {
return db.oneOrNone('select data from user_config where type=$1', 'config')
.then(row => row ? row.data.config : [])
}
function loadAccounts () { function loadAccounts () {
const toFields = fieldArr => R.fromPairs(R.map(r => [r.code, r.value], fieldArr)) const toFields = fieldArr => R.fromPairs(R.map(r => [r.code, r.value], fieldArr))
const toPairs = r => [r.code, toFields(r.fields)] const toPairs = r => [r.code, toFields(r.fields)]
@ -40,5 +42,6 @@ function settings () {
module.exports = { module.exports = {
settings, settings,
loadConfig,
load load
} }