lamassu-server/lib/settings-loader.js
Josh Harvey a375adb8b9 WIPP
2016-12-08 17:56:50 +02:00

69 lines
1.4 KiB
JavaScript

const R = require('ramda')
const db = require('./db')
let settingsCache
function load (versionId) {
return Promise.all([loadConfig(versionId), loadAccounts()])
.then(([config, accounts]) => ({
config,
accounts
}))
}
function loadLatest (versionId) {
return Promise.all([loadLatestConfig(), loadAccounts()])
.then(([config, accounts]) => ({
config,
accounts
}))
}
function loadConfig (versionId) {
const sql = `select data
from user_config
where versionId=$1 and type=$2`
return db.oneOrNone(sql, [versionId, 'config'])
.then(row => row ? row.data.config : [])
}
function loadLatestConfig () {
const sql = `select data
from user_config
where type=$1
order by versionId desc
limit 1`
return db.oneOrNone(sql, ['config'])
.then(row => row ? row.data.config : [])
}
function loadAccounts () {
const toFields = fieldArr => R.fromPairs(R.map(r => [r.code, r.value], fieldArr))
const toPairs = r => [r.code, toFields(r.fields)]
return db.oneOrNone('select data from user_config where type=$1', 'accounts')
.then(function (data) {
if (!data) return {}
return R.fromPairs(R.map(toPairs, data.data.accounts))
})
}
function settings () {
return settingsCache
}
function save (config) {
const sql = 'update user_config set data=$1 where type=$2'
return db.none(sql, [{config}, 'config'])
}
module.exports = {
settings,
loadConfig,
load,
loadLatest,
save
}