Return top scores already sorted
This commit is contained in:
@ -52,16 +52,15 @@ Promise.all([
|
|||||||
prettyBytes(results[3])
|
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')
|
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(
|
console.log(
|
||||||
table(topPackages.map(packageName => [
|
table(topPackages)
|
||||||
packageName,
|
|
||||||
results[packageName].toLocaleString()
|
|
||||||
]))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
process.exit()
|
process.exit()
|
||||||
|
@ -36,7 +36,7 @@ const createScoresMap = (array) => {
|
|||||||
return map
|
return map
|
||||||
}
|
}
|
||||||
|
|
||||||
const getTopScores = (key, n = 10) =>
|
const getScoresMap = (key, n = 10) =>
|
||||||
new Promise((resolve, reject) => {
|
new Promise((resolve, reject) => {
|
||||||
db.zrevrange(key, 0, n, 'withscores', (error, value) => {
|
db.zrevrange(key, 0, n, 'withscores', (error, value) => {
|
||||||
if (error) {
|
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) =>
|
const sumTopScores = (keys, n) =>
|
||||||
Promise.all(keys.map(key => getTopScores(key, n))).then(values => {
|
Promise.all(keys.map(key => getScoresMap(key, n)))
|
||||||
return values.reduce((memo, map) => {
|
.then(sumMaps)
|
||||||
Object.keys(map).forEach(key => {
|
.then(createTopScores)
|
||||||
memo[key] = (memo[key] || 0) + map[key]
|
|
||||||
})
|
|
||||||
|
|
||||||
return memo
|
return memo
|
||||||
}, {})
|
}, {})
|
||||||
|
Reference in New Issue
Block a user