lamassu-server/lib/apply-defaults.js
2017-07-26 01:12:14 +03:00

48 lines
1.2 KiB
JavaScript

const assert = require('assert')
const _ = require('lodash/fp')
const settingsLoader = require('../lib/settings-loader')
const schema = require('../lamassu-schema.json')
const newFields = []
const DEFAULT_CRYPTO = _.first(_.find(['code', 'cryptoCurrencies'], schema.fields).default)
assert(DEFAULT_CRYPTO)
module.exports = {run}
function run () {
return Promise.resolve()
.then(() => {
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.machineScope === 'specific') return
const crypto = group.cryptoScope === 'specific'
? DEFAULT_CRYPTO
: 'global'
return newFields.push({
fieldLocator: {
fieldScope: {
crypto,
machine: 'global'
},
code: fieldCode,
fieldType: field.fieldType,
fieldClass: field.fieldClass
},
fieldValue: {
fieldType: field.fieldType,
value: field.default
}
})
})
})
return settingsLoader.save(newFields)
})
}