dbot/modules/admin/admin.js
reality 8e8953999d Various database branch fixes [#331]:
* Admin module doesn't try to use reload string when it's not there.
* Fix dent event hookin
* Fix quote retrieval (two ~q definitions and no false check before interpolate)
* Change databankerised modules to use redis for testing
2013-04-22 14:22:35 +00:00

64 lines
2.0 KiB
JavaScript

/**
* Module Name: Admin
* Description: Set of commands which only one who is a DepressionBot
* administrator can run - as such, it has its own command execution listener.
*/
var fs = require('fs'),
_ = require('underscore')._;
var admin = function(dbot) {
this.internalAPI = {
'getCurrentConfig': function(configKey, callback) {
if(configKey) {
this.db.read('config', configKey, function(err, cRecord) {
if(cRecord) {
console.log('record found');
callback(cRecord.value)
} else {
var configPath = dbot.config;
configKey = configKey.split('.');
for(var i=0;i<configKey.length;i++) {
if(_.has(configPath, configKey[i])) {
configPath = configPath[configKey[i]];
} else {
callback(false);
break;
}
}
process.nextTick(function() {
callback(configPath);
});
}
});
} else {
callback(dbot.config);
}
}.bind(this)
};
this.onLoad = function() {
var configMap = dbot.config;
this.db.scan('config', function(config) {
if(config) {
var currentPath = configMap,
key = config.key.split('.'),
value = config.value;
for(var i=0;i<key.length-1;i++) {
if(_.has(currentPath, key[i])) {
currentPath = currentPath[key[i]];
}
}
currentPath[key[i]] = value;
}
}, function(err) { });
}.bind(this);
};
exports.fetch = function(dbot) {
return new admin(dbot);
};