branding: move logo into database
initially, i tried to put this in the current value field but that is TEXT and has a size limit of 64K. TEXT also stores things with character encoding, so we have to stash it as base64
This commit is contained in:
@@ -3,9 +3,11 @@
|
||||
'use strict';
|
||||
|
||||
exports = module.exports = {
|
||||
get: get,
|
||||
getAll: getAll,
|
||||
set: set,
|
||||
get,
|
||||
getAll,
|
||||
set,
|
||||
getBlob,
|
||||
setBlob,
|
||||
_clear: clear
|
||||
};
|
||||
|
||||
@@ -14,6 +16,7 @@ var assert = require('assert'),
|
||||
database = require('./database.js');
|
||||
|
||||
const SETTINGS_FIELDS = [ 'name', 'value' ].join(',');
|
||||
const SETTINGS_BLOB_FIELDS = [ 'name', 'valueBlob' ].join(',');
|
||||
|
||||
function get(key, callback) {
|
||||
assert.strictEqual(typeof key, 'string');
|
||||
@@ -47,6 +50,31 @@ function set(key, value, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function getBlob(key, callback) {
|
||||
assert.strictEqual(typeof key, 'string');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
database.query(`SELECT ${SETTINGS_BLOB_FIELDS} FROM settings WHERE name = ?`, [ key ], function (error, result) {
|
||||
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
|
||||
if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND, 'Setting not found'));
|
||||
|
||||
callback(null, result[0].valueBlob);
|
||||
});
|
||||
}
|
||||
|
||||
function setBlob(key, value, callback) {
|
||||
assert.strictEqual(typeof key, 'string');
|
||||
assert(value === null || Buffer.isBuffer(value));
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
database.query('INSERT INTO settings (name, valueBlob) VALUES (?, ?) ON DUPLICATE KEY UPDATE valueBlob=VALUES(valueBlob)', [ key, value ], function (error) {
|
||||
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error)); // don't rely on affectedRows here since it gives 2
|
||||
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function clear(callback) {
|
||||
database.query('DELETE FROM settings', function (error) {
|
||||
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
|
||||
|
||||
Reference in New Issue
Block a user