summary refs log tree commit diff
path: root/src/db
diff options
context:
space:
mode:
authorCadence Ember <cadence@disroot.org>2024-09-29 03:27:40 +1300
committerCadence Ember <cadence@disroot.org>2024-09-29 03:27:40 +1300
commit034f8d6b554c9273f43fcbfdaedfbff0813d0d34 (patch)
tree339b555effd5a6101d58f1af635e31dc51ef48a2 /src/db
parentMerge branch 'v3.0-beta3' (diff)
downloadout-of-your-element-034f8d6b554c9273f43fcbfdaedfbff0813d0d34.tar.xz
Code coverage reporting
Diffstat (limited to 'src/db')
-rw-r--r--src/db/migrations/0002-optimise-profile-content.up.js1
-rw-r--r--src/db/orm-defs.d.ts1
-rw-r--r--src/db/orm.js2
-rw-r--r--src/db/orm.test.js5
4 files changed, 8 insertions, 1 deletions
diff --git a/src/db/migrations/0002-optimise-profile-content.up.js b/src/db/migrations/0002-optimise-profile-content.up.js

index a8619cf..5b540cb 100644 --- a/src/db/migrations/0002-optimise-profile-content.up.js +++ b/src/db/migrations/0002-optimise-profile-content.up.js
@@ -3,6 +3,7 @@ module.exports = async function(db) { const contents = db.prepare("SELECT distinct hashed_profile_content FROM sim_member WHERE hashed_profile_content IS NOT NULL").pluck().all() const stmt = db.prepare("UPDATE sim_member SET hashed_profile_content = ? WHERE hashed_profile_content = ?") db.transaction(() => { + /* c8 ignore next 6 */ for (let s of contents) { let b = Buffer.isBuffer(s) ? Uint8Array.from(s) : Uint8Array.from(Buffer.from(s)) const unsignedHash = hasher.h64Raw(b) diff --git a/src/db/orm-defs.d.ts b/src/db/orm-defs.d.ts
index b1e6b79..c235e99 100644 --- a/src/db/orm-defs.d.ts +++ b/src/db/orm-defs.d.ts
@@ -124,3 +124,4 @@ export type PickTypeOf<T, K extends AllKeys<T>> = T extends { [k in K]?: any } ? export type Merge<U> = {[x in AllKeys<U>]: PickTypeOf<U, x>} export type Nullable<T> = {[k in keyof T]: T[k] | null} export type Numberish<T> = {[k in keyof T]: T[k] extends number ? (number | bigint) : T[k]} +export type ValueOrArray<T> = {[k in keyof T]: T[k][] | T[k]} diff --git a/src/db/orm.js b/src/db/orm.js
index 646012b..4d9b6f1 100644 --- a/src/db/orm.js +++ b/src/db/orm.js
@@ -8,7 +8,7 @@ const U = require("./orm-defs") * @template {keyof U.Models[Table]} Col * @param {Table} table * @param {Col[] | Col} cols - * @param {Partial<U.Numberish<U.Models[Table]>>} where + * @param {Partial<U.ValueOrArray<U.Numberish<U.Models[Table]>>>} where * @param {string} [e] */ function select(table, cols, where = {}, e = "") { diff --git a/src/db/orm.test.js b/src/db/orm.test.js
index a53cc66..278723a 100644 --- a/src/db/orm.test.js +++ b/src/db/orm.test.js
@@ -30,6 +30,11 @@ test("orm: select: all, where and pluck works on multiple columns", t => { t.deepEqual(names, ["cadence [they]"]) }) +test("orm: select: in array works", t => { + const ids = select("emoji", "emoji_id", {name: ["online", "upstinky"]}).pluck().all() + t.deepEqual(ids, ["288858540888686602", "606664341298872324"]) +}) + test("orm: from: get pluck works", t => { const guildID = from("guild_space").pluck("guild_id").and("WHERE space_id = ?").get("!jjWAGMeQdNrVZSSfvz:cadence.moe") t.equal(guildID, data.guild.general.id)