update addFeatures

- add case_boilerplate
- add grantFeature query
This commit is contained in:
Michael C
2023-09-27 21:03:53 -04:00
parent 4438ce7db6
commit 964634dc51
4 changed files with 72 additions and 44 deletions

View File

@@ -1,7 +1,9 @@
import { IDatabase } from "../../src/databases/IDatabase";
import { HashedUserID } from "../../src/types/user.model";
import { usernameUserArray } from "./genUser";
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);
@@ -9,7 +11,28 @@ export const insertUsername = async (db: IDatabase, userID: HashedUserID, userNa
};
export const insertUsernameBulk = async (db: IDatabase, users: usernameUserArray) => {
const query = 'INSERT INTO "userNames" ("userID", "userName", "locked") VALUES(?, ?, ?)';
for (const user of Object.values(users))
await db.prepare("run", query, [user.pubID, user.username, 0]);
await insertUsername(db, user.pubID, user.username, false);
};
// 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);
};
// userFeatures
export const grantFeature = async (db: IDatabase, target: HashedUserID, feature: Feature, issuer = "default-issuer", time = 0) => {
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);
};