diff --git a/lib/new-admin/graphql/schema.js b/lib/new-admin/graphql/schema.js index 8c8813d9..0c90071c 100644 --- a/lib/new-admin/graphql/schema.js +++ b/lib/new-admin/graphql/schema.js @@ -258,7 +258,7 @@ const resolvers = { serverLogs.getServerLogs(from, until, limit, offset), transactions: (...[, { from, until, limit, offset }]) => transactions.batch(from, until, limit, offset), - config: () => settingsLoader.loadLatestConfig(), + config: () => settingsLoader.loadLatestConfigOrNone(), accounts: () => settingsLoader.loadAccounts() }, Mutation: { diff --git a/lib/new-settings-loader.js b/lib/new-settings-loader.js index bee21064..3136f761 100644 --- a/lib/new-settings-loader.js +++ b/lib/new-settings-loader.js @@ -31,7 +31,7 @@ function loadAccounts () { function saveConfig (config) { const sql = 'insert into user_config (type, data, valid, schema_version) values ($1, $2, $3, $4)' - return loadLatestConfig() + return loadLatestConfigOrNone() .then(currentConfig => { const newConfig = _.assign(currentConfig, config) return db.none(sql, ['config', { config: newConfig }, true, NEW_SETTINGS_LOADER_SCHEMA_VERSION]) @@ -39,7 +39,7 @@ function saveConfig (config) { } function loadLatest () { - return Promise.all([loadLatestConfig(), loadAccounts()]) + return Promise.all([loadLatestConfigOrNone(), loadAccounts()]) .then(([config, accounts]) => ({ config, accounts @@ -56,16 +56,24 @@ function loadLatestConfig () { limit 1` return db.one(sql, ['config', NEW_SETTINGS_LOADER_SCHEMA_VERSION]) - .then(row => row.data.config) + .then(row => row ? row.data.config : {}) .catch(err => { - if (err.name === 'QueryResultError') { - throw new Error('No config was found') - } - throw err }) } +function loadLatestConfigOrNone () { + const sql = `select data + from user_config + where type=$1 + and schema_version=$2 + order by id desc + limit 1` + + return db.oneOrNone(sql, ['config', NEW_SETTINGS_LOADER_SCHEMA_VERSION]) + .then(row => row ? row.data.config : {}) +} + function loadConfig (versionId) { const sql = `select data from user_config @@ -101,5 +109,6 @@ module.exports = { loadAccounts, loadLatest, loadLatestConfig, + loadLatestConfigOrNone, load }