arr.push instead of add at index

This commit is contained in:
Michael C
2021-12-30 03:13:55 -05:00
parent 0db3240f58
commit 90f891aee4
2 changed files with 29 additions and 25 deletions

View File

@@ -7,14 +7,20 @@ const MILLISECONDS_IN_MINUTE = 60000;
const getTopCategoryUsersWithCache = createMemoryCache(generateTopCategoryUsersStats, config.getTopUsersCacheTimeMinutes * MILLISECONDS_IN_MINUTE); const getTopCategoryUsersWithCache = createMemoryCache(generateTopCategoryUsersStats, config.getTopUsersCacheTimeMinutes * MILLISECONDS_IN_MINUTE);
const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400; const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400;
async function generateTopCategoryUsersStats(sortBy: string, category: string) { interface DBSegment {
userName: string,
viewCount: number,
totalSubmissions: number,
minutesSaved: number,
}
async function generateTopCategoryUsersStats(sortBy: string, category: string) {
const userNames = []; const userNames = [];
const viewCounts = []; const viewCounts = [];
const totalSubmissions = []; const totalSubmissions = [];
const minutesSaved = []; const minutesSaved = [];
const rows = await db.prepare("all", `SELECT COUNT(*) as "totalSubmissions", SUM(views) as "viewCount", const rows: DBSegment[] = await db.prepare("all", `SELECT COUNT(*) as "totalSubmissions", SUM(views) as "viewCount",
SUM(((CASE WHEN "sponsorTimes"."endTime" - "sponsorTimes"."startTime" > ? THEN ? ELSE "sponsorTimes"."endTime" - "sponsorTimes"."startTime" END) / 60) * "sponsorTimes"."views") as "minutesSaved", SUM(((CASE WHEN "sponsorTimes"."endTime" - "sponsorTimes"."startTime" > ? THEN ? ELSE "sponsorTimes"."endTime" - "sponsorTimes"."startTime" END) / 60) * "sponsorTimes"."views") as "minutesSaved",
SUM("votes") as "userVotes", COALESCE("userNames"."userName", "sponsorTimes"."userID") as "userName" FROM "sponsorTimes" LEFT JOIN "userNames" ON "sponsorTimes"."userID"="userNames"."userID" SUM("votes") as "userVotes", COALESCE("userNames"."userName", "sponsorTimes"."userID") as "userName" FROM "sponsorTimes" LEFT JOIN "userNames" ON "sponsorTimes"."userID"="userNames"."userID"
LEFT JOIN "shadowBannedUsers" ON "sponsorTimes"."userID"="shadowBannedUsers"."userID" LEFT JOIN "shadowBannedUsers" ON "sponsorTimes"."userID"="shadowBannedUsers"."userID"
@@ -22,12 +28,11 @@ async function generateTopCategoryUsersStats(sortBy: string, category: string) {
GROUP BY COALESCE("userName", "sponsorTimes"."userID") HAVING SUM("votes") > 20 GROUP BY COALESCE("userName", "sponsorTimes"."userID") HAVING SUM("votes") > 20
ORDER BY "${sortBy}" DESC LIMIT 100`, [category, maxRewardTimePerSegmentInSeconds, maxRewardTimePerSegmentInSeconds]); ORDER BY "${sortBy}" DESC LIMIT 100`, [category, maxRewardTimePerSegmentInSeconds, maxRewardTimePerSegmentInSeconds]);
for (let i = 0; i < rows.length; i++) { for (const row of rows) {
userNames[i] = rows[i].userName; userNames.push(row.userName);
viewCounts.push(row.viewCount);
viewCounts[i] = rows[i].viewCount; totalSubmissions.push(row.totalSubmissions);
totalSubmissions[i] = rows[i].totalSubmissions; minutesSaved.push(row.minutesSaved);
minutesSaved[i] = rows[i].minutesSaved;
} }
return { return {

View File

@@ -36,24 +36,23 @@ async function generateTopUsersStats(sortBy: string, categoryStatsEnabled = fals
GROUP BY COALESCE("userName", "sponsorTimes"."userID") HAVING SUM("votes") > 20 GROUP BY COALESCE("userName", "sponsorTimes"."userID") HAVING SUM("votes") > 20
ORDER BY "${sortBy}" DESC LIMIT 100`, [maxRewardTimePerSegmentInSeconds, maxRewardTimePerSegmentInSeconds]); ORDER BY "${sortBy}" DESC LIMIT 100`, [maxRewardTimePerSegmentInSeconds, maxRewardTimePerSegmentInSeconds]);
for (let i = 0; i < rows.length; i++) { for (const row of rows) {
userNames[i] = rows[i].userName; userNames.push(row.userName);
viewCounts.push(row.viewCount);
viewCounts[i] = rows[i].viewCount; totalSubmissions.push(row.totalSubmissions);
totalSubmissions[i] = rows[i].totalSubmissions; minutesSaved.push(row.minutesSaved);
minutesSaved[i] = rows[i].minutesSaved;
if (categoryStatsEnabled) { if (categoryStatsEnabled) {
categoryStats[i] = [ categoryStats.push([
rows[i].categorySumSponsor, row.categorySumSponsor,
rows[i].categorySumIntro, row.categorySumIntro,
rows[i].categorySumOutro, row.categorySumOutro,
rows[i].categorySumInteraction, row.categorySumInteraction,
rows[i].categorySumSelfpromo, row.categorySumSelfpromo,
rows[i].categorySumMusicOfftopic, row.categorySumMusicOfftopic,
rows[i].categorySumPreview, row.categorySumPreview,
rows[i].categorySumHighlight, row.categorySumHighlight,
rows[i].categorySumFiller row.categorySumFiller,
]; ]);
} }
} }