Skip to content

Commit d608125

Browse files
committed
Add endpoint for casual submission count
1 parent fb3abb3 commit d608125

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

databases/_private_indexes.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,9 @@ CREATE INDEX IF NOT EXISTS "ratings_videoID"
3030
CREATE INDEX IF NOT EXISTS "casualVotes_videoID"
3131
ON public."casualVotes" USING btree
3232
("videoID" COLLATE pg_catalog."default" ASC NULLS LAST, "service" COLLATE pg_catalog."default" ASC NULLS LAST, "userID" COLLATE pg_catalog."default" ASC NULLS LAST)
33+
TABLESPACE pg_default;
34+
35+
CREATE INDEX IF NOT EXISTS "casualVotes_userID"
36+
ON public."casualVotes" USING btree
37+
("userID" COLLATE pg_catalog."default" ASC NULLS LAST)
3338
TABLESPACE pg_default;

src/routes/getUserInfo.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { db } from "../databases/databases";
1+
import { db, privateDB } from "../databases/databases";
22
import { getHashCache } from "../utils/getHashCache";
33
import { isUserVIP } from "../utils/isUserVIP";
44
import { Request, Response } from "express";
@@ -144,6 +144,16 @@ async function getThumbnailSubmissionCount(userID: HashedUserID): Promise<number
144144
}
145145
}
146146

147+
async function getCasualSubmissionCount(userID: HashedUserID): Promise<number> {
148+
try {
149+
const row = await privateDB.prepare("get", `SELECT COUNT(DISTINCT "videoID") as "casualSubmissionCount" FROM "casualVotes" WHERE "userID" = ?`, [userID], { useReplica: true });
150+
return row?.casualSubmissionCount ?? 0;
151+
} catch (err) /* istanbul ignore next */ {
152+
return null;
153+
}
154+
}
155+
156+
147157
type cases = Record<string, any>
148158

149159
const executeIfFunction = (f: any) =>
@@ -173,6 +183,7 @@ const dbGetValue = (userID: HashedUserID, property: string): Promise<string|Segm
173183
freeChaptersAccess: () => true,
174184
titleSubmissionCount: () => getTitleSubmissionCount(userID),
175185
thumbnailSubmissionCount: () => getThumbnailSubmissionCount(userID),
186+
casualSubmissionCount: () => getCasualSubmissionCount(userID),
176187
})("")(property);
177188
};
178189

@@ -183,7 +194,7 @@ async function getUserInfo(req: Request, res: Response): Promise<Response> {
183194
"viewCount", "ignoredViewCount", "warnings", "warningReason", "reputation",
184195
"vip", "lastSegmentID"];
185196
const allProperties: string[] = [...defaultProperties, "banned", "permissions", "freeChaptersAccess",
186-
"ignoredSegmentCount", "titleSubmissionCount", "thumbnailSubmissionCount", "deArrowWarningReason"];
197+
"ignoredSegmentCount", "titleSubmissionCount", "thumbnailSubmissionCount", "casualSubmissionCount", "deArrowWarningReason"];
187198
let paramValues: string[] = req.query.values
188199
? JSON.parse(req.query.values as string)
189200
: req.query.value

0 commit comments

Comments
 (0)