Skip to content

Instantly share code, notes, and snippets.

@tapmodo
Created October 2, 2014 19:51
Show Gist options
  • Save tapmodo/0aaaf1db066538ad9981 to your computer and use it in GitHub Desktop.
Save tapmodo/0aaaf1db066538ad9981 to your computer and use it in GitHub Desktop.
Compare "async" and "co" libraries
server.get('/queue/pending',function(req,res,next){
var page = req.params.page || 1;
page = page - 1;
var per_page = req.params.per_page || 50;
pool.getConnection(function(err,db){
async.series([
function(done){
db.query(
'SELECT COUNT(*) AS total FROM '+
'(SELECT DISTINCT event, venue, event_time FROM import_queue '+
'WHERE event_id IS NULL) A',
[],
done
);
},
function(done){
db.query(
'SELECT DISTINCT event, venue, event_time, '+
'MD5(CONCAT(event,venue,event_time)) AS hash, '+
'COUNT(id) AS queue_count FROM import_queue '+
'WHERE event_id IS NULL '+
'GROUP BY event, venue, event_time ORDER BY queue_count DESC '+
'LIMIT ?, ?',
[ page*per_page, parseInt(per_page) ],
done
)
}
],function(err,results){
db.release();
var output = results[1][0];
output.map(function(item){
item.hash = item.hash.toString();
return item;
});
res.json({
total_rows: results[0][0][0].total,
queued: output
});
next();
});
});
});
server.get('/queue/pending',function(req,res,next){
var page = (req.params.page || 1) - 1;
var per_page = req.params.per_page || 50;
co(function *(){
var pending_rows = yield query(
'SELECT COUNT(*) AS total FROM '+
'(SELECT DISTINCT event, venue, event_time FROM import_queue '+
'WHERE event_id IS NULL) A',
[]
);
var queued_hashes = yield query(
'SELECT DISTINCT event, venue, event_time, '+
'MD5(CONCAT(event,venue,event_time)) AS hash, '+
'COUNT(id) AS queue_count FROM import_queue '+
'WHERE event_id IS NULL '+
'GROUP BY event, venue, event_time ORDER BY queue_count DESC '+
'LIMIT ?, ?',
[ page*per_page, parseInt(per_page) ]
);
res.json({
total_rows: pending_rows[0].total,
queued: queued_hashes.map(function(item){
item.hash = item.hash.toString();
return item;
})
});
})(next);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment