settings keys in DB converted to camel case
callback-based settings model replaced by async-based settings model
This commit is contained in:
parent
6c5c47ac2e
commit
d8ee364a4b
22 changed files with 123 additions and 143 deletions
|
|
@ -10,7 +10,8 @@ let log = require('npmlog');
|
|||
let fs = require('fs');
|
||||
let pathlib = require('path');
|
||||
let Handlebars = require('handlebars');
|
||||
let meta = require('../meta.json');
|
||||
|
||||
const highestLegacySchemaVersion = 29;
|
||||
|
||||
let mysqlConfig = {
|
||||
multipleStatements: true
|
||||
|
|
@ -66,14 +67,27 @@ function getSchemaVersion(callback) {
|
|||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
connection.query('SELECT `value` FROM `settings` WHERE `key`=?', ['db_schema_version'], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let dbSchemaVersion = rows && rows[0] && Number(rows[0].value) || 0;
|
||||
callback(null, dbSchemaVersion);
|
||||
connection.query('SHOW TABLES LIKE "knex_migrations"', (err, rows) => {
|
||||
if (rows) {
|
||||
connection.release();
|
||||
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
callback(null, highestLegacySchemaVersion);
|
||||
} else {
|
||||
connection.query('SELECT `value` FROM `settings` WHERE `key`=?', ['db_schema_version'], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let dbSchemaVersion = rows && rows[0] && Number(rows[0].value) || 0;
|
||||
callback(null, dbSchemaVersion);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -142,7 +156,7 @@ function runUpdates(callback, runCount) {
|
|||
return callback(err);
|
||||
}
|
||||
|
||||
if (schemaVersion >= meta.schemaVersion) {
|
||||
if (schemaVersion >= highestLegacySchemaVersion) {
|
||||
// nothing to do here, already updated
|
||||
return callback(null, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
let config = require('config');
|
||||
let path = require('path');
|
||||
let fs = require('fs');
|
||||
let tools = require('./tools');
|
||||
let settings = require('./models/settings');
|
||||
let lists = require('./models/lists');
|
||||
let fields = require('./models/fields');
|
||||
let forms = require('./models/forms');
|
||||
let _ = require('./translate')._;
|
||||
let objectHash = require('object-hash');
|
||||
let mjml = require('mjml');
|
||||
let mjmlTemplates = new Map();
|
||||
let hbs = require('hbs');
|
||||
|
||||
module.exports = {
|
||||
getDefaultMergeTags,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
'use strict';
|
||||
|
||||
const { nodeifyFunction } = require('./nodeify');
|
||||
const getSettings = nodeifyFunction(require('../models/settings').get);
|
||||
|
||||
let log = require('npmlog');
|
||||
let config = require('config');
|
||||
let nodemailer = require('nodemailer');
|
||||
let openpgpEncrypt = require('nodemailer-openpgp').openpgpEncrypt;
|
||||
let settings = require('./models/settings');
|
||||
let tools = require('./tools');
|
||||
let db = require('./db');
|
||||
let Handlebars = require('handlebars');
|
||||
|
|
@ -169,7 +171,7 @@ function getTemplate(template, callback) {
|
|||
}
|
||||
|
||||
function createMailer(callback) {
|
||||
settings.list(['smtpHostname', 'smtpPort', 'smtpEncryption', 'smtpUser', 'smtpPass', 'smtpLog', 'smtpDisableAuth', 'smtpMaxConnections', 'smtpMaxMessages', 'smtpSelfSigned', 'pgpPrivateKey', 'pgpPassphrase', 'smtpThrottling', 'mailTransport', 'sesKey', 'sesSecret', 'sesRegion'], (err, configItems) => {
|
||||
getSettings(['smtpHostname', 'smtpPort', 'smtpEncryption', 'smtpUser', 'smtpPass', 'smtpLog', 'smtpDisableAuth', 'smtpMaxConnections', 'smtpMaxMessages', 'smtpSelfSigned', 'pgpPrivateKey', 'pgpPassphrase', 'smtpThrottling', 'mailTransport', 'sesKey', 'sesSecret', 'sesRegion'], (err, configItems) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,77 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
let tools = require('../tools');
|
||||
let db = require('../db');
|
||||
|
||||
module.exports = {
|
||||
list: listValues,
|
||||
get: getValue,
|
||||
set: setValue
|
||||
};
|
||||
|
||||
function listValues(filter, callback) {
|
||||
if (!callback && typeof filter === 'function') {
|
||||
callback = filter;
|
||||
filter = false;
|
||||
}
|
||||
|
||||
// TODO: It would be good to cache the settings. It feels awkward to always go to DB to retrieve something what is essentially a constant
|
||||
|
||||
filter = [].concat(filter || []).map(key => tools.toDbKey(key));
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let query;
|
||||
|
||||
if (filter.length) {
|
||||
query = 'SELECT * FROM settings WHERE `key` IN (' + filter.map(() => '?').join(',') + ')';
|
||||
} else {
|
||||
query = 'SELECT * FROM settings';
|
||||
}
|
||||
|
||||
connection.query(query, filter, (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
let settings = {};
|
||||
(rows || []).forEach(row => {
|
||||
settings[row.key] = row.value;
|
||||
});
|
||||
return callback(null, tools.convertKeys(settings));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getValue(key, callback) {
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
connection.query('SELECT `value` FROM settings WHERE `key`=?', [tools.toDbKey(key)], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, rows && rows[0] && rows[0].value || false);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setValue(key, value, callback) {
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
connection.query('INSERT INTO settings (`key`, `value`) VALUES (?,?) ON DUPLICATE KEY UPDATE `key`=?, `value`=?', [key, value, key, value], (err, response) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, response && response.insertId || 0);
|
||||
});
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue