Bring back settingsdb.js
config.js is now meant for instance level data ie data for specific cloudron instance. The sqlite database is meant for data that is needed across restores.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/* jslint node:true */
|
||||
|
||||
'use strict';
|
||||
|
||||
var DatabaseError = require('./databaseerror'),
|
||||
debug = require('debug')('box:settingsdb'),
|
||||
assert = require('assert'),
|
||||
database = require('./database.js');
|
||||
|
||||
exports = module.exports = {
|
||||
get: get,
|
||||
getAll: getAll,
|
||||
set: set,
|
||||
|
||||
NAKED_DOMAIN_KEY: 'naked_domain'
|
||||
};
|
||||
|
||||
function get(key, callback) {
|
||||
assert(typeof key === 'string');
|
||||
assert(typeof callback === 'function');
|
||||
|
||||
database.get('SELECT * FROM settings WHERE key = ?', [ key ], function (error, result) {
|
||||
if (error) return callback(new DatabaseError(error, DatabaseError.INTERNAL_ERROR));
|
||||
|
||||
if (typeof result === 'undefined') return callback(new DatabaseError(null, DatabaseError.NOT_FOUND));
|
||||
|
||||
callback(null, result.value);
|
||||
});
|
||||
}
|
||||
|
||||
function getAll(callback) {
|
||||
database.all('SELECT * FROM settings', function (error, result) {
|
||||
if (error) return callback(new DatabaseError(error, DatabaseError.INTERNAL_ERROR));
|
||||
|
||||
if (typeof result === 'undefined') result = [ ];
|
||||
|
||||
callback(null, result);
|
||||
});
|
||||
}
|
||||
|
||||
function set(key, value, callback) {
|
||||
assert(typeof key === 'string');
|
||||
assert(value === null || typeof value === 'string');
|
||||
assert(typeof callback === 'function');
|
||||
|
||||
// sqlite does not have upsert
|
||||
database.run('INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)', [ key, value ], function (error) {
|
||||
if (error || this.changes !== 1) return callback(new DatabaseError(error, DatabaseError.INTERNAL_ERROR));
|
||||
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ var database = require('../database'),
|
||||
tokendb = require('../tokendb.js'),
|
||||
clientdb = require('../clientdb.js'),
|
||||
authcodedb = require('../authcodedb.js'),
|
||||
settingsdb = require('../settingsdb.js'),
|
||||
appdb = require('../appdb.js'),
|
||||
expect = require('expect.js'),
|
||||
mkdirp = require('mkdirp'),
|
||||
@@ -598,5 +599,43 @@ describe('database', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('settings', function () {
|
||||
it('can set value', function (done) {
|
||||
settingsdb.set('somekey', 'somevalue', function (error) {
|
||||
expect(error).to.be(null);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('can get the set value', function (done) {
|
||||
settingsdb.get('somekey', function (error, value) {
|
||||
expect(error).to.be(null);
|
||||
expect(value).to.be('somevalue');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('can get all values', function (done) {
|
||||
settingsdb.getAll(function (error, result) {
|
||||
expect(error).to.be(null);
|
||||
expect(result).to.be.an(Array);
|
||||
expect(result[0]).to.eql({ key: 'somekey', value: 'somevalue' });
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('can update a value', function (done) {
|
||||
settingsdb.set('somekey', 'someothervalue', function (error) {
|
||||
expect(error).to.be(null);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('can get updated value', function (done) {
|
||||
settingsdb.get('somekey', function (error, value) {
|
||||
expect(error).to.be(null);
|
||||
expect(value).to.be('someothervalue');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user