Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var users = {};
  2.  
  3. async.waterfall([
  4.   function(cb){
  5.     pg.raw("SELECT user_id, count(*) FROM offers WHERE status = 'active' GROUP BY user_id")
  6.     .then(function(usersDb){
  7.       usersDb.forEach(function(user){
  8.         users[user.id] = {countActiveSales: user.count}
  9.       })
  10.       cb(null);
  11.     })
  12.   },
  13.   function(cb){
  14.     // С учетом того что created_at является timestamp
  15.     pg.raw('SELECT user_id, count(*) FROM offers WHERE created_at::date > CURRENT_DATE - 1 GROUP BY user_id')
  16.     .then(function(usersDb){
  17.       usersDb.forEach(function(user){
  18.         users[user.id].countTodaySales = user.count;
  19.       })
  20.       cb(null);
  21.     })
  22.   }
  23. ],
  24. function(){
  25.   Object.keys(users).forEach(function(userId){
  26.   async.parallel([
  27.     function(cb){
  28.       // Вытаскиваем количество продаж из редиса примерно таким образом
  29.       redis.ZSCORE('sales_count', userId, function(err, salesCount) {
  30.         users[userId].salesCount = salesCount;
  31.         cb(null);
  32.       }
  33.     },
  34.     function(cb){
  35.       // Вытаскиваем сумму продаж
  36.       redis.ZSCORE('sales_sum', userId, function(err, salesSum) {
  37.         users[userId].salesSum = salesSum;
  38.         cb(null);
  39.       }
  40.     }
  41.   ],
  42.   function(){
  43.     //send digests
  44.   })
  45. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement