mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-06 11:36:58 +03:00
Add endpoint for casual submission count
This commit is contained in:
@@ -30,4 +30,9 @@ CREATE INDEX IF NOT EXISTS "ratings_videoID"
|
|||||||
CREATE INDEX IF NOT EXISTS "casualVotes_videoID"
|
CREATE INDEX IF NOT EXISTS "casualVotes_videoID"
|
||||||
ON public."casualVotes" USING btree
|
ON public."casualVotes" USING btree
|
||||||
("videoID" COLLATE pg_catalog."default" ASC NULLS LAST, "service" COLLATE pg_catalog."default" ASC NULLS LAST, "userID" COLLATE pg_catalog."default" ASC NULLS LAST)
|
("videoID" COLLATE pg_catalog."default" ASC NULLS LAST, "service" COLLATE pg_catalog."default" ASC NULLS LAST, "userID" COLLATE pg_catalog."default" ASC NULLS LAST)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS "casualVotes_userID"
|
||||||
|
ON public."casualVotes" USING btree
|
||||||
|
("userID" COLLATE pg_catalog."default" ASC NULLS LAST)
|
||||||
TABLESPACE pg_default;
|
TABLESPACE pg_default;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { db } from "../databases/databases";
|
import { db, privateDB } from "../databases/databases";
|
||||||
import { getHashCache } from "../utils/getHashCache";
|
import { getHashCache } from "../utils/getHashCache";
|
||||||
import { isUserVIP } from "../utils/isUserVIP";
|
import { isUserVIP } from "../utils/isUserVIP";
|
||||||
import { Request, Response } from "express";
|
import { Request, Response } from "express";
|
||||||
@@ -144,6 +144,16 @@ async function getThumbnailSubmissionCount(userID: HashedUserID): Promise<number
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getCasualSubmissionCount(userID: HashedUserID): Promise<number> {
|
||||||
|
try {
|
||||||
|
const row = await privateDB.prepare("get", `SELECT COUNT(DISTINCT "videoID") as "casualSubmissionCount" FROM "casualVotes" WHERE "userID" = ?`, [userID], { useReplica: true });
|
||||||
|
return row?.casualSubmissionCount ?? 0;
|
||||||
|
} catch (err) /* istanbul ignore next */ {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
type cases = Record<string, any>
|
type cases = Record<string, any>
|
||||||
|
|
||||||
const executeIfFunction = (f: any) =>
|
const executeIfFunction = (f: any) =>
|
||||||
@@ -173,6 +183,7 @@ const dbGetValue = (userID: HashedUserID, property: string): Promise<string|Segm
|
|||||||
freeChaptersAccess: () => true,
|
freeChaptersAccess: () => true,
|
||||||
titleSubmissionCount: () => getTitleSubmissionCount(userID),
|
titleSubmissionCount: () => getTitleSubmissionCount(userID),
|
||||||
thumbnailSubmissionCount: () => getThumbnailSubmissionCount(userID),
|
thumbnailSubmissionCount: () => getThumbnailSubmissionCount(userID),
|
||||||
|
casualSubmissionCount: () => getCasualSubmissionCount(userID),
|
||||||
})("")(property);
|
})("")(property);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -183,7 +194,7 @@ async function getUserInfo(req: Request, res: Response): Promise<Response> {
|
|||||||
"viewCount", "ignoredViewCount", "warnings", "warningReason", "reputation",
|
"viewCount", "ignoredViewCount", "warnings", "warningReason", "reputation",
|
||||||
"vip", "lastSegmentID"];
|
"vip", "lastSegmentID"];
|
||||||
const allProperties: string[] = [...defaultProperties, "banned", "permissions", "freeChaptersAccess",
|
const allProperties: string[] = [...defaultProperties, "banned", "permissions", "freeChaptersAccess",
|
||||||
"ignoredSegmentCount", "titleSubmissionCount", "thumbnailSubmissionCount", "deArrowWarningReason"];
|
"ignoredSegmentCount", "titleSubmissionCount", "thumbnailSubmissionCount", "casualSubmissionCount", "deArrowWarningReason"];
|
||||||
let paramValues: string[] = req.query.values
|
let paramValues: string[] = req.query.values
|
||||||
? JSON.parse(req.query.values as string)
|
? JSON.parse(req.query.values as string)
|
||||||
: req.query.value
|
: req.query.value
|
||||||
|
|||||||
Reference in New Issue
Block a user