more mongo and redis stuff

v1.18.x
Baris Soner Usakli 11 years ago
parent 53a7eab3e8
commit 2e2938616d

@ -154,6 +154,13 @@
});
}
module.getObjects = function(keys, callback) {
db.collection('objects').find({_key:{$in:keys}}, {_id:0, _key:0}).toArray(function(err, data) {
callback(err, data);
});
}
module.getObjectField = function(key, field, callback) {
module.getObjectFields(key, [field], function(err, data) {
if(err) {

@ -170,6 +170,18 @@
redisClient.hgetall(key, callback);
}
module.getObjects = function(keys, callback) {
var multi = redisClient.multi();
for(var x=0; x<keys.length; ++x) {
multi.hgetall(keys[x]);
}
multi.exec(function (err, replies) {
callback(err, replies);
});
}
module.getObjectField = function(key, field, callback) {
module.getObjectFields(key, [field], function(err, data) {
if(err) {

@ -59,16 +59,14 @@ var async = require('async'),
};
function destroy(nid) {
var multi = RDB.multi();
multi.del('notifications:' + nid);
multi.srem('notifications', nid);
multi.exec(function(err) {
if (err) {
winston.error('Problem deleting expired notifications. Stack follows.');
winston.error(err.stack);
}
db.delete('notifications:' + nid, function(err, result) {
db.setRemove('notifications', nid, function(err, result) {
if (err) {
winston.error('Problem deleting expired notifications. Stack follows.');
winston.error(err.stack);
}
});
});
}
@ -193,6 +191,11 @@ var async = require('async'),
};
Notifications.prune = function(cutoff) {
// TODO: this function wont work with dbal in its current state
// things to figure out
// 1 - RDB.keys mongo uses regex, redis uses global patterns?
// 2 - Need to remove the RDB.multi
if (process.env.NODE_ENV === 'development') {
winston.info('[notifications.prune] Removing expired notifications from the database.');
}

@ -364,15 +364,14 @@ var db = require('./database'),
}
Posts.getPostsByPids = function(pids, callback) {
var posts = [],
multi = RDB.multi();
var keys = [];
for(var x=0, numPids=pids.length; x<numPids; x++) {
multi.hgetall("post:" + pids[x]);
keys.push('post:' + pids[x]);
}
multi.exec(function (err, replies) {
async.map(replies, function(postData, _callback) {
db.getObjects(keys, function(err, data) {
async.map(data, function(postData, _callback) {
if (postData) {
try {
@ -382,10 +381,10 @@ var db = require('./database'),
winston.err('invalid time value');
}
postTools.parse(postData.content, function(err, content) {
postData.content = content;
postTools.parse(postData.content, function(err, content) {
postData.content = content;
_callback(null, postData);
});
});
} else {
_callback(null);
}
@ -396,7 +395,7 @@ var db = require('./database'),
return callback(err, null);
}
});
})
});
}
Posts.getCidByPid = function(pid, callback) {

@ -107,6 +107,13 @@ var DebugRoute = function(app) {
});
}
function getObjects(callback) {
db.getObjects(['testing1', 'testing2', 'retardation', 'user:1'], function(err, data) {
console.log('getObjects return ', data);
callback(err, {'getObjects':data});
});
}
function setObjectField(callback) {
db.setObjectField(objectKey, 'reputation', 5, function(err, result) {
console.log('setObjectField return', result);
@ -302,7 +309,8 @@ var DebugRoute = function(app) {
getObjectValues,
isObjectField,
incrObjectFieldBy,
getObject
getObject,
getObjects
];
var sortedSetTasks = [
@ -342,7 +350,7 @@ var DebugRoute = function(app) {
isMemberOfSets
];
require('async').series(listTasks, function(err, results) {
require('async').series(objectTasks, function(err, results) {
if(err) {
console.log(err);
res.send(err.message);

@ -168,14 +168,16 @@ var db = require('./database'),
topics.getTopicFields(tid, ['cid', 'lastposttime'], function(err, topicData) {
var oldCid = topicData.cid;
var multi = RDB.multi();
multi.zrem('categories:' + oldCid + ':tid', tid);
multi.zadd('categories:' + cid + ':tid', topicData.lastposttime, tid);
db.sortedSetRemove('categories:' + oldCid + ':tid', tid, function(err, result) {
db.sortedSetAdd('categories:' + cid + ':tid', topicData.lastposttime, tid, function(err, result) {
multi.exec(function(err, result) {
if (!err && result[0] === 1 && result[1] === 1) {
if(err) {
socket.emit('api:topic.move', {
status: 'error'
});
return;
}
topics.setTopicField(tid, 'cid', cid);
@ -201,11 +203,7 @@ var db = require('./database'),
websockets.in('topic_' + tid).emit('event:topic_moved', {
tid: tid
});
} else {
socket.emit('api:topic.move', {
status: 'error'
});
}
});
});
});
}

@ -140,7 +140,6 @@ var path = require('path'),
app.use(express.bodyParser()); // Puts POST vars in request.body
app.use(express.cookieParser()); // If you want to parse cookies (res.cookies)
// TODO : this uses redis
app.use(express.session({
store: db.sessionStore,
secret: nconf.get('secret'),

Loading…
Cancel
Save