Rename user stats parameters

This commit is contained in:
Ajay Ramachandran
2021-09-15 20:44:20 -04:00
parent 18c1735087
commit 4d9e595470
2 changed files with 10 additions and 10 deletions

View File

@@ -7,9 +7,9 @@ import { Logger } from "../utils/logger";
type nestedObj = Record<string, Record<string, number>>; type nestedObj = Record<string, Record<string, number>>;
const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400; const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400;
async function dbGetUserSummary(userID: HashedUserID, categoryStats: boolean, typeStats: boolean) { async function dbGetUserSummary(userID: HashedUserID, fetchCategoryStats: boolean, fetchActionTypeStats: boolean) {
let additionalQuery = ""; let additionalQuery = "";
if (categoryStats) { if (fetchCategoryStats) {
additionalQuery += ` additionalQuery += `
SUM(CASE WHEN "category" = 'sponsor' THEN 1 ELSE 0 END) as "categorySumSponsor", SUM(CASE WHEN "category" = 'sponsor' THEN 1 ELSE 0 END) as "categorySumSponsor",
SUM(CASE WHEN "category" = 'intro' THEN 1 ELSE 0 END) as "categorySumIntro", SUM(CASE WHEN "category" = 'intro' THEN 1 ELSE 0 END) as "categorySumIntro",
@@ -20,7 +20,7 @@ async function dbGetUserSummary(userID: HashedUserID, categoryStats: boolean, ty
SUM(CASE WHEN "category" = 'preview' THEN 1 ELSE 0 END) as "categorySumPreview", SUM(CASE WHEN "category" = 'preview' THEN 1 ELSE 0 END) as "categorySumPreview",
SUM(CASE WHEN "category" = 'poi_highlight' THEN 1 ELSE 0 END) as "categorySumHighlight",`; SUM(CASE WHEN "category" = 'poi_highlight' THEN 1 ELSE 0 END) as "categorySumHighlight",`;
} }
if (typeStats) { if (fetchActionTypeStats) {
additionalQuery += ` additionalQuery += `
SUM(CASE WHEN "actionType" = 'skip' THEN 1 ELSE 0 END) as "typeSumSkip", SUM(CASE WHEN "actionType" = 'skip' THEN 1 ELSE 0 END) as "typeSumSkip",
SUM(CASE WHEN "actionType" = 'mute' THEN 1 ELSE 0 END) as "typeSumMute",`; SUM(CASE WHEN "actionType" = 'mute' THEN 1 ELSE 0 END) as "typeSumMute",`;
@@ -42,7 +42,7 @@ async function dbGetUserSummary(userID: HashedUserID, categoryStats: boolean, ty
minutesSaved: proxy.minutesSaved, minutesSaved: proxy.minutesSaved,
segmentCount: proxy.segmentCount, segmentCount: proxy.segmentCount,
}; };
if (categoryStats) { if (fetchCategoryStats) {
result.categoryCount = { result.categoryCount = {
sponsor: proxy.categorySumSponsor, sponsor: proxy.categorySumSponsor,
intro: proxy.categorySumIntro, intro: proxy.categorySumIntro,
@@ -54,7 +54,7 @@ async function dbGetUserSummary(userID: HashedUserID, categoryStats: boolean, ty
poi_highlight: proxy.categorySumHighlight, poi_highlight: proxy.categorySumHighlight,
}; };
} }
if (typeStats) { if (fetchActionTypeStats) {
result.actionTypeCount = { result.actionTypeCount = {
skip: proxy.typeSumSkip, skip: proxy.typeSumSkip,
mute: proxy.typeSumMute, mute: proxy.typeSumMute,
@@ -79,14 +79,14 @@ async function dbGetUsername(userID: HashedUserID) {
export async function getUserStats(req: Request, res: Response): Promise<Response> { export async function getUserStats(req: Request, res: Response): Promise<Response> {
const userID = req.query.userID as UserID; const userID = req.query.userID as UserID;
const hashedUserID: HashedUserID = userID ? getHash(userID) : req.query.publicUserID as HashedUserID; const hashedUserID: HashedUserID = userID ? getHash(userID) : req.query.publicUserID as HashedUserID;
const categoryStats = req.query.categoryStats == "true"; const fetchCategoryStats = req.query.fetchCategoryStats == "true";
const typeStats = req.query.typeStats == "true"; const fetchActionTypeStats = req.query.fetchActionTypeStats == "true";
if (hashedUserID == undefined) { if (hashedUserID == undefined) {
//invalid request //invalid request
return res.status(400).send("Invalid userID or publicUserID parameter"); return res.status(400).send("Invalid userID or publicUserID parameter");
} }
const segmentSummary = await dbGetUserSummary(hashedUserID, categoryStats, typeStats); const segmentSummary = await dbGetUserSummary(hashedUserID, fetchCategoryStats, fetchActionTypeStats);
const responseObj = { const responseObj = {
userID: hashedUserID, userID: hashedUserID,
userName: await dbGetUsername(hashedUserID), userName: await dbGetUsername(hashedUserID),

View File

@@ -32,7 +32,7 @@ describe("getUserStats", () => {
}); });
it("Should be able to get all user info", (done: Done) => { it("Should be able to get all user info", (done: Done) => {
fetch(`${getbaseURL()}/api/userStats?userID=getuserstats_user_01&categoryStats=true&typeStats=true`) fetch(`${getbaseURL()}/api/userStats?userID=getuserstats_user_01&fetchCategoryStats=true&fetchActionTypeStats=true`)
.then(async res => { .then(async res => {
assert.strictEqual(res.status, 200); assert.strictEqual(res.status, 200);
const expected = { const expected = {
@@ -109,7 +109,7 @@ describe("getUserStats", () => {
}); });
it("Should get parts of extra stats if not requested", (done: Done) => { it("Should get parts of extra stats if not requested", (done: Done) => {
fetch(`${getbaseURL()}/api/userStats?userID=getuserstats_user_01&typeStats=true`) fetch(`${getbaseURL()}/api/userStats?userID=getuserstats_user_01&fetchActionTypeStats=true`)
.then(async res => { .then(async res => {
assert.strictEqual(res.status, 200); assert.strictEqual(res.status, 200);
const data = await res.json(); const data = await res.json();