-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsettings.js
48 lines (38 loc) · 1.08 KB
/
settings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
'use strict';
var db = require('../database'),
plugins = require('../plugins');
module.exports = function(Meta) {
Meta.settings = {};
Meta.settings.get = function(hash, callback) {
db.getObject('settings:' + hash, function(err, settings) {
callback(err, settings || {});
});
};
Meta.settings.getOne = function(hash, field, callback) {
db.getObjectField('settings:' + hash, field, callback);
};
Meta.settings.set = function(hash, values, callback) {
hash = 'settings:' + hash;
db.setObject(hash, values, function(err) {
if (!err) {
plugins.fireHook('action:settings.set', hash, values);
}
callback.apply(this, arguments);
});
};
Meta.settings.setOne = function(hash, field, value, callback) {
db.setObjectField('settings:' + hash, field, value, callback);
};
Meta.settings.setOnEmpty = function (hash, field, value, callback) {
Meta.settings.getOne(hash, field, function (err, curValue) {
if (err) {
return callback(err);
}
if (!curValue) {
Meta.settings.setOne(hash, field, value, callback);
} else {
callback();
}
});
};
};