mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-14 07:27:01 +03:00
add segment generator
- getIsUserVIP - postClearCache - update boilerplate
This commit is contained in:
@@ -3,24 +3,14 @@ import { HashedUserID } from "../../src/types/user.model";
|
||||
import { User, userArray, usernameUserArray } from "./genUser";
|
||||
import { Feature } from "../../src/types/user.model";
|
||||
|
||||
// usernames
|
||||
export const insertUsername = async (db: IDatabase, userID: HashedUserID, userName: string, locked = false) => {
|
||||
const query = 'INSERT INTO "userNames" ("userID", "userName", "locked") VALUES(?, ?, ?)';
|
||||
const lockedValue = Number(locked);
|
||||
await db.prepare("run", query, [userID, userName, lockedValue]);
|
||||
};
|
||||
|
||||
export const insertUsernameBulk = async (db: IDatabase, users: usernameUserArray) => {
|
||||
for (const user of Object.values(users))
|
||||
await insertUsername(db, user.pubID, user.username, false);
|
||||
};
|
||||
// segments
|
||||
export { insertSegment } from "./segmentQueryGen";
|
||||
|
||||
// vip
|
||||
export const insertVip = async (db: IDatabase, userID: HashedUserID) => {
|
||||
const query = 'INSERT INTO "vipUsers" ("userID") VALUES (?)';
|
||||
await db.prepare("run", query, [userID]);
|
||||
};
|
||||
|
||||
export const insertVipBulk = async (db: IDatabase, users: userArray) => {
|
||||
for (const user of Object.values(users))
|
||||
await insertVip(db, user.pubID);
|
||||
@@ -31,8 +21,18 @@ export const grantFeature = async (db: IDatabase, target: HashedUserID, feature:
|
||||
const query = 'INSERT INTO "userFeatures" ("userID", "feature", "issuerUserID", "timeSubmitted") VALUES(?, ?, ?, ?)';
|
||||
await db.prepare("run", query, [target, feature, issuer, time]);
|
||||
};
|
||||
|
||||
export const bulkGrantFeature = async (db: IDatabase, users: userArray, feature: Feature, issuer: User, time = 0) => {
|
||||
for (const user of Object.values(users))
|
||||
await grantFeature(db, user.pubID, feature, issuer.pubID, time);
|
||||
};
|
||||
};
|
||||
|
||||
// usernames
|
||||
export const insertUsername = async (db: IDatabase, userID: HashedUserID, userName: string, locked = false) => {
|
||||
const query = 'INSERT INTO "userNames" ("userID", "userName", "locked") VALUES(?, ?, ?)';
|
||||
const lockedValue = Number(locked);
|
||||
await db.prepare("run", query, [userID, userName, lockedValue]);
|
||||
};
|
||||
export const insertUsernameBulk = async (db: IDatabase, users: usernameUserArray) => {
|
||||
for (const user of Object.values(users))
|
||||
await insertUsername(db, user.pubID, user.username, false);
|
||||
};
|
||||
|
||||
64
test/utils/segmentQueryGen.ts
Normal file
64
test/utils/segmentQueryGen.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { IDatabase } from "../../src/databases/IDatabase";
|
||||
import { Service, VideoIDHash, VideoID } from "../../src/types/segments.model";
|
||||
import { HashedUserID, UserID } from "../../src/types/user.model";
|
||||
import { genRandom } from "./getRandom";
|
||||
import { getHash } from "../../src/utils/getHash";
|
||||
|
||||
type insertSegmentParams = {
|
||||
videoID?: string,
|
||||
startTime?: number,
|
||||
endTime?: number,
|
||||
votes?: number,
|
||||
locked?: boolean | number,
|
||||
UUID?: string,
|
||||
userID?: HashedUserID | "",
|
||||
timeSubmitted?: number,
|
||||
views?: number,
|
||||
category?: string,
|
||||
actionType?: string,
|
||||
service?: Service,
|
||||
videoDuration?: number,
|
||||
hidden?: boolean | number,
|
||||
shadowHidden?: boolean | number,
|
||||
hashedVideoID?: VideoIDHash | "",
|
||||
description?: string
|
||||
};
|
||||
const defaultSegmentParams: insertSegmentParams = {
|
||||
videoID: "",
|
||||
startTime: 0,
|
||||
endTime: 0,
|
||||
votes: 0,
|
||||
locked: false,
|
||||
UUID: "",
|
||||
userID: "",
|
||||
timeSubmitted: 0,
|
||||
views: 0,
|
||||
category: "sponsor",
|
||||
actionType: "skip",
|
||||
service: Service.YouTube,
|
||||
videoDuration: 0,
|
||||
hidden: false,
|
||||
shadowHidden: false,
|
||||
hashedVideoID: "",
|
||||
description: ""
|
||||
};
|
||||
|
||||
// sponsorTimes
|
||||
export const insertSegment = async(db: IDatabase, fnname: string, testcase: string, params: insertSegmentParams = defaultSegmentParams) => {
|
||||
const query = 'INSERT INTO "sponsorTimes" ("videoID", "startTime", "endTime", "votes", "locked", "UUID", "userID", "timeSubmitted", "views", "category", "actionType", "service", "videoDuration", "hidden", "shadowHidden", "hashedVideoID", "description") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
// corrections for parameters
|
||||
const identifier = `${fnname}-${testcase}`;
|
||||
const correctedParams = params;
|
||||
// generate defaults
|
||||
const videoID = (params.videoID || `vid-${identifier}`) as VideoID;
|
||||
const userID = (params.userID || `user-${identifier}`) as UserID;
|
||||
if (!params.videoID) correctedParams.videoID = videoID;
|
||||
if (!params.UUID) correctedParams.UUID = `uuid-${identifier}-${genRandom(2)}`;
|
||||
if (!params.userID) correctedParams.userID = getHash(userID);
|
||||
if (!params.hashedVideoID) correctedParams.hashedVideoID = getHash(videoID);
|
||||
// convert bool to 0 | 1
|
||||
correctedParams.locked = Number(params.locked);
|
||||
correctedParams.hidden = Number(params.hidden);
|
||||
correctedParams.shadowHidden = Number(params.shadowHidden);
|
||||
await db.prepare("run", query, Object.values(correctedParams));
|
||||
};
|
||||
Reference in New Issue
Block a user