Skip to content

Instantly share code, notes, and snippets.

@tim-smart
Forked from Valid/gist:438803
Created June 15, 2010 07:33
Show Gist options
  • Save tim-smart/438805 to your computer and use it in GitHub Desktop.
Save tim-smart/438805 to your computer and use it in GitHub Desktop.
require.paths.unshift('lib');
require('express');
require('express/plugins');
redisclient = require('redis-node-client/lib/redis-client');
Parallel = require('parallel').Parallel;
redis = redisclient.createClient();
sys = require('sys');
configure(function () {
use(Logger);
set('root', __dirname);
});
get('/', function () {
starttime = new Date().getTime();
self = this;
redis.hgetall('site:1:details', function (err, siteDetails) {
//redisclient.convertMultiBulkBuffersToUTF8Strings(siteDetails);
redis.zcard('site:1:auctions', function (err, auctions) {
redis.zcard('site:1:bids', function (err, bids) {
redis.zrange('site:1:open', 0, -1, function (err, liveAuctions) {
liveAuctionDetailList = {};
//redisclient.convertMultiBulkBuffersToUTF8Strings(liveAuctions);
redis.zrange('site:1:auctions', 0, -1, function (err, pastAuctions) {
pastAuctionDetailList = {};
//redisclient.convertMultiBulkBuffersToUTF8Strings(pastAuctions);
function getLiveAuctionDetails(iterator, callback) {
redis.hgetall('auction:' + liveAuctions[iterator] + ':details', function (err, auctionDetails) {
//redisclient.convertMultiBulkBuffersToUTF8Strings(auctionDetails);
//sys.p(auctionDetails);
liveAuctionDetailList[iterator] = auctionDetails;
callback();
});
}
function getPastAuctionDetails(iterator, callback) {
redis.hgetall('auction:' + pastAuctions[iterator] + ':details', function (err, auctionDetails) {
//redisclient.convertMultiBulkBuffersToUTF8Strings(auctionDetails);
//sys.p(auctionDetails);
pastAuctionDetailList[iterator] = auctionDetails;
callback();
});
}
var detailsTask = new Parallel();
for (var i = 0; i < liveAuctions.length; i++) {
detailsTask.add(i, [getLiveAuctionDetails, i]);
} // for
var offset = liveAuctions.length;
for (i = 0; i < pastAuctions.length; i++) {
detailsTask.add(offset + i, [getPastAuctionDetails, i]);
} // for
detailsTask.run(function (task) {
if (task === null) {
self.render('front.html.ejs', {
locals: {
siteDetails: siteDetails,
auctions: auctions,
bids: bids,
liveAuctions: liveAuctions,
liveAuctionDetails: liveAuctionDetailList,
pastAuctions: pastAuctions,
pastAuctionDetails: pastAuctionDetailList,
timer: new Date().getTime() - starttime
}
});
}
});
});
});
});
});
});
});
run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment