more work

v1.18.x
Baris Usakli 11 years ago
parent 80e7fd93c6
commit 4f654fb489

@ -1,6 +1,6 @@
var nconf = require('nconf');
db = require('./databases/' + nconf.get('database'));
db = require('./database/' + nconf.get('database'));
module.exports = db;

@ -0,0 +1,72 @@
(function(module) {
'use strict';
var mongoClient,
mongo = require('mongo')
winston = require('winston'),
nconf = require('nconf'),
mongoHost = nconf.get('mongo:host'),
utils = require('./../../public/src/utils.js');
// temp, look this up
mongoClient = mongo.createClient(nconf.get('mongo:port'), nconf.get('mongo:host'));
// look up how its done in mongo
/*if (nconf.get('mongo:password')) {
redisClient.auth(nconf.get('mongo:password'));
}
var db = parseInt(nconf.get('mongo:database'), 10);
if (db){
mongoClient.select(db, function(error) {
if(error) {
winston.error("NodeBB could not connect to your Redis database. Redis returned the following error: " + error.message);
process.exit();
}
});
}*/
//
// Exported functions
//
module.getFileName = function(callback) {
// TODO : get mongodb filename
}
module.setObject = function(key, data, callback) {
// TODO : implement in mongo
}
module.setObjectField = function(key, field, callback) {
// TODO : implement in mongo
}
module.getObject = function(key, callback) {
// TODO : implement in mongo
}
module.getObjectField = function(key, field, callback) {
// TODO : implement in mongo
}
module.getObjectFields = function(key, fields, callback) {
// TODO : implement in mongo
}
module.deleteObjectField = function(key, field, callback) {
// TODO : implement in mongo
}
module.incrObjectField = function(key, field, value, callback) {
// TODO : implement in mongo
}
}(exports));

@ -2,65 +2,76 @@
(function(module) {
'use strict';
var RedisDB,
var redisClient,
redis = require('redis'),
winston = require('winston'),
nconf = require('nconf'),
redis_socket_or_host = nconf.get('redis:host'),
utils = require('./../public/src/utils.js');
utils = require('./../../public/src/utils.js');
if (redis_socket_or_host && redis_socket_or_host.indexOf('/')>=0) {
/* If redis.host contains a path name character, use the unix dom sock connection. ie, /tmp/redis.sock */
RedisDB = redis.createClient(nconf.get('redis:host'));
redisClient = redis.createClient(nconf.get('redis:host'));
} else {
/* Else, connect over tcp/ip */
RedisDB = redis.createClient(nconf.get('redis:port'), nconf.get('redis:host'));
redisClient = redis.createClient(nconf.get('redis:port'), nconf.get('redis:host'));
}
if (nconf.get('redis:password')) {
RedisDB.auth(nconf.get('redis:password'));
redisClient.auth(nconf.get('redis:password'));
}
var db = parseInt(nconf.get('redis:database'), 10);
if (db){
RedisDB.select(db, function(error){
if(error !== null){
redisClient.select(db, function(error) {
if(error) {
winston.error("NodeBB could not connect to your Redis database. Redis returned the following error: " + error.message);
process.exit();
}
});
}
RedisDB.handle = function(error) {
if (error !== null) {
winston.err(error);
if (global.env !== 'production') {
throw new Error(error);
}
}
};
/*
* A possibly more efficient way of doing multiple sismember calls
*/
RedisDB.sismembers = function(key, needles, callback) {
function sismembers(key, needles, callback) {
var tempkey = key + ':temp:' + utils.generateUUID();
RedisDB.sadd(tempkey, needles, function() {
RedisDB.sinter(key, tempkey, function(err, data) {
RedisDB.del(tempkey);
redisClient.sadd(tempkey, needles, function() {
redisClient.sinter(key, tempkey, function(err, data) {
redisClient.del(tempkey);
callback(err, data);
});
});
};
/*
* gets fields of a hash as an object instead of an array
*/
RedisDB.hmgetObject = function(key, fields, callback) {
RedisDB.hmget(key, fields, function(err, data) {
//
// Exported functions
//
module.setObject = function(key, data, callback) {
redisClient.hmset(key, data, callback);
}
module.setObjectField = function(key, field, callback) {
redisClient.hset(key, field, callback)
}
module.getObject = function(key, callback) {
redisClient.hgetall(key, callback)
}
module.getObjectField = function(key, field, callback) {
module.getObjectFields(key, [field], function(err, data) {
if(err) {
return callback(err);
}
callback(null, data[field]);
});
}
module.getObjectFields = function(key, fields, callback) {
redisClient.hmget(key, fields, function(err, data) {
if(err) {
return callback(err, null);
}
@ -73,9 +84,18 @@
callback(null, returnData);
});
};
}
module.deleteObjectField = function(key, field, callback) {
redisClient.hdel(key, field, callback);
}
module.incrObjectField = function(key, field, value, callback) {
redisClient.hincrby(key, field, value, callback);
}
module.exports = RedisDB;
}(exports));

@ -1,11 +1,13 @@
var utils = require('./../public/src/utils.js'),
RDB = require('./redis.js'),
plugins = require('./plugins'),
async = require('async'),
var fs = require('fs'),
path = require('path'),
fs = require('fs'),
async = require('async'),
winston = require('winston'),
nconf = require('nconf');
nconf = require('nconf'),
utils = require('./../public/src/utils'),
db = require('./database'),
plugins = require('./plugins');
(function (Meta) {
Meta.config = {};
@ -15,33 +17,34 @@ var utils = require('./../public/src/utils.js'),
delete Meta.config;
Meta.configs.list(function (err, config) {
if (!err) {
Meta.config = config;
callback();
} else {
if(err) {
winston.error(err);
return callback(err);
}
Meta.config = config;
callback();
});
},
list: function (callback) {
RDB.hgetall('config', function (err, config) {
if (!err) {
config = config || {};
config.status = 'ok';
callback(err, config);
} else {
callback(new Error('could-not-read-config'));
db.getObject('config', function (err, config) {
if(err) {
return callback(new Error('could-not-read-config'));
}
config = config || {};
config.status = 'ok';
callback(err, config);
});
},
get: function (field, callback) {
RDB.hget('config', field, callback);
db.getObjectField('config', field, callback);
},
getFields: function (fields, callback) {
RDB.hmgetObject('config', fields, callback);
db.getObjectFields('config', fields, callback);
},
set: function (field, value, callback) {
RDB.hset('config', field, value, function (err, res) {
db.setObjectField(field, value, function(err, res) {
if (callback) {
if(!err && Meta.config)
Meta.config[field] = value;
@ -59,7 +62,7 @@ var utils = require('./../public/src/utils.js'),
});
},
remove: function (field) {
RDB.hdel('config', field);
db.deleteObjectField('config', field);
}
};
@ -125,7 +128,7 @@ var utils = require('./../public/src/utils.js'),
themeData['theme:staticDir'] = config.staticDir ? config.staticDir : '';
themeData['theme:templates'] = config.templates ? config.templates : '';
RDB.hmset('config', themeData, next);
db.setObject('config', themeData, next);
}
], function(err) {
callback(err);
@ -134,7 +137,7 @@ var utils = require('./../public/src/utils.js'),
case 'bootswatch':
themeData['theme:src'] = data.src;
RDB.hmset('config', themeData, callback);
db.setObject('config', themeData, callback);
break;
}
}
@ -256,11 +259,16 @@ var utils = require('./../public/src/utils.js'),
}),
minified;
if (process.env.NODE_ENV === 'development') winston.info('Minifying client-side libraries');
if (process.env.NODE_ENV === 'development') {
winston.info('Minifying client-side libraries');
}
minified = uglifyjs.minify(jsPaths);
fs.writeFile(Meta.js.minFile, minified.code, function (err) {
if (!err) {
if (process.env.NODE_ENV === 'development') winston.info('Minified client-side libraries');
if (process.env.NODE_ENV === 'development') {
winston.info('Minified client-side libraries');
}
callback();
} else {
winston.error('Problem minifying client-side libraries, exiting.');
@ -272,23 +280,7 @@ var utils = require('./../public/src/utils.js'),
Meta.db = {
getFile: function (callback) {
var multi = RDB.multi();
multi.config('get', 'dir');
multi.config('get', 'dbfilename');
multi.exec(function (err, results) {
if (err) {
return callback(err);
} else {
results = results.reduce(function (memo, config) {
memo[config[0]] = config[1];
return memo;
}, {});
var dbFile = path.join(results.dir, results.dbfilename);
callback(null, dbFile);
}
});
db.getFileName(callback);
}
};
}(exports));

@ -1,9 +1,10 @@
var fs = require('fs'),
path = require('path'),
RDB = require('./redis.js'),
async = require('async'),
winston = require('winston'),
eventEmitter = require('events').EventEmitter,
db = require('./database'),
plugins = {
libraries: {},
loadedHooks: {},

Loading…
Cancel
Save