Return top scores already sorted
This commit is contained in:
parent
bca5babb7d
commit
9dc0630bb3
|
@ -52,16 +52,15 @@ Promise.all([
|
|||
prettyBytes(results[3])
|
||||
)
|
||||
|
||||
sumTopScores(pastSevenDays.map(date => `stats-packageRequests-${createDayKey(date)}`)).then(results => {
|
||||
sumTopScores(pastSevenDays.map(date => `stats-packageRequests-${createDayKey(date)}`)).then(topPackages => {
|
||||
console.log('\n## Top Packages This Week')
|
||||
|
||||
const topPackages = Object.keys(results).sort((a, b) => results[b] - results[a])
|
||||
topPackages.forEach(result => {
|
||||
result[1] = result[1].toLocaleString()
|
||||
})
|
||||
|
||||
console.log(
|
||||
table(topPackages.map(packageName => [
|
||||
packageName,
|
||||
results[packageName].toLocaleString()
|
||||
]))
|
||||
table(topPackages)
|
||||
)
|
||||
|
||||
process.exit()
|
||||
|
|
|
@ -36,7 +36,7 @@ const createScoresMap = (array) => {
|
|||
return map
|
||||
}
|
||||
|
||||
const getTopScores = (key, n = 10) =>
|
||||
const getScoresMap = (key, n = 10) =>
|
||||
new Promise((resolve, reject) => {
|
||||
db.zrevrange(key, 0, n, 'withscores', (error, value) => {
|
||||
if (error) {
|
||||
|
@ -47,12 +47,28 @@ const getTopScores = (key, n = 10) =>
|
|||
})
|
||||
})
|
||||
|
||||
const createTopScores = (map) =>
|
||||
Object.keys(map)
|
||||
.reduce((memo, key) => memo.concat([ [ key, map[key] ] ]), [])
|
||||
.sort((a, b) => b[1] - a[1])
|
||||
|
||||
const getTopScores = (key, n) =>
|
||||
getScoresMap(key, n).then(createTopScores)
|
||||
|
||||
const sumMaps = (maps) =>
|
||||
maps.reduce((memo, map) => {
|
||||
Object.keys(map).forEach(key => {
|
||||
memo[key] = (memo[key] || 0) + map[key]
|
||||
})
|
||||
|
||||
return memo
|
||||
}, {})
|
||||
|
||||
const sumTopScores = (keys, n) =>
|
||||
Promise.all(keys.map(key => getTopScores(key, n))).then(values => {
|
||||
return values.reduce((memo, map) => {
|
||||
Object.keys(map).forEach(key => {
|
||||
memo[key] = (memo[key] || 0) + map[key]
|
||||
})
|
||||
Promise.all(keys.map(key => getScoresMap(key, n)))
|
||||
.then(sumMaps)
|
||||
.then(createTopScores)
|
||||
|
||||
|
||||
return memo
|
||||
}, {})
|
||||
|
|
Loading…
Reference in New Issue