Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var users = {};
- async.waterfall([
- function(cb){
- pg.raw("SELECT user_id, count(*) FROM offers WHERE status = 'active' GROUP BY user_id")
- .then(function(usersDb){
- usersDb.forEach(function(user){
- users[user.id] = {countActiveSales: user.count}
- })
- cb(null);
- })
- },
- function(cb){
- // С учетом того что created_at является timestamp
- pg.raw('SELECT user_id, count(*) FROM offers WHERE created_at::date > CURRENT_DATE - 1 GROUP BY user_id')
- .then(function(usersDb){
- usersDb.forEach(function(user){
- users[user.id].countTodaySales = user.count;
- })
- cb(null);
- })
- }
- ],
- function(){
- Object.keys(users).forEach(function(userId){
- async.parallel([
- function(cb){
- // Вытаскиваем количество продаж из редиса примерно таким образом
- redis.ZSCORE('sales_count', userId, function(err, salesCount) {
- users[userId].salesCount = salesCount;
- cb(null);
- }
- },
- function(cb){
- // Вытаскиваем сумму продаж
- redis.ZSCORE('sales_sum', userId, function(err, salesSum) {
- users[userId].salesSum = salesSum;
- cb(null);
- }
- }
- ],
- function(){
- //send digests
- })
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement