Files
SponsorBlockServer/test/utils/segmentQueryGen.ts
Michael C 726983bb9b getChapterNames
- remove identifier from segmentGen
- add multiGenRandomValue
- add videoInfo query
2023-09-27 23:53:18 -04:00

67 lines
2.7 KiB
TypeScript

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, genRandomValue } 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: ""
};
export const insertSegment = async(db: IDatabase, params: insertSegmentParams = {}) => {
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 correctedParams = { ...defaultSegmentParams, ...params };
const identifier = genRandom(7); // 7 to fill out videoID
// 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 = genRandomValue("uuid", identifier, 2);
if (!params.userID) correctedParams.userID = getHash(userID);
if (!params.hashedVideoID) correctedParams.hashedVideoID = getHash(videoID);
// convert bool to 0 | 1
correctedParams.locked = Number(correctedParams.locked);
correctedParams.hidden = Number(correctedParams.hidden);
correctedParams.shadowHidden = Number(correctedParams.shadowHidden);
await db.prepare("run", query, Object.values(correctedParams));
};
export const insertChapter = async(db: IDatabase, description: string, params: insertSegmentParams = {}) => {
const overrides = { category: "chapter", actionType: "chapter", description, ...params };
await insertSegment(db, overrides);
};