-
Notifications
You must be signed in to change notification settings - Fork 130
Expand file tree
/
Copy pathstat.js
More file actions
85 lines (81 loc) · 2.88 KB
/
stat.js
File metadata and controls
85 lines (81 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var config = require('./config.js');
var stat = {
recommendFor: function(userId, numberOfRecs, callback){
client.zrevrange([config.className, 'user', userId, 'recommendedSet'].join(":"), 0, numberOfRecs, function(err, results){
callback(results);
});
},
bestRated: function(callback){
client.zrevrange([config.className,'scoreBoard'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
worstRated: function(callback){
client.zrange([config.className, 'scoreBoard'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
bestRatedWithScores: function(numOfRatings, callback){
client.zrevrange([config.className,'scoreBoard'].join(":"), 0, numOfRatings, 'withscores', function(err, results){
callback(results);
});
},
mostLiked: function(callback){
client.zrevrange([config.className, 'mostLiked'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
mostDisliked: function(callback){
client.zrevrange([config.className, 'mostDisliked'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
usersWhoLikedAlsoLiked: function(itemId){
},
mostSimilarUsers: function(userId, callback){
client.zrevrange([config.className, 'user', userId, 'similaritySet'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
leastSimilarUsers: function(userId, callback){
client.zrange([config.className, 'user', userId, 'similaritySet'].join(":"), 0, -1, function(err, results){
callback(results);
});
},
likedBy: function(itemId, callback){
client.smembers([config.className, 'item', itemId,'liked'].join(':'), function(err, results){
callback(results);
});
},
likedCount: function(itemId, callback){
client.scard([config.className, 'item', itemId, 'liked'].join(':'), function(err, results){
callback(results);
});
},
dislikedBy: function(itemId, callback){
client.smembers([config.className, 'item', itemId, 'disliked'].join(':'), function(err, results){
callback(results);
});
},
dislikedCount: function(itemId, callback){
client.scard([config.className, 'item', itemId, 'disliked'].join(':'), function(err, results){
callback(results);
});
},
allLikedFor: function(userId, callback){
client.smembers([config.className, 'user', userId, 'liked'].join(":"), function(err, results){
callback(results);
});
},
allDislikedFor: function(userId, callback){
client.smembers([config.className, 'user', userId, 'disliked'].join(":"), function(err, results){
callback(results);
});
},
allWatchedFor: function(userId, callback){
client.sunion([config.className, 'user', userId, 'liked'].join(":"), [config.className, 'user', userId, 'disliked'].join(":"), function(err, results){
callback(results);
});
}
};
module.exports = stat;