From d81aa51787b5be202c49af65195adf94b84810a9 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Tue, 19 Sep 2023 01:23:52 +1200 Subject: [PATCH] orm: fix pluck, add basic tests --- db/orm.js | 5 ++++- db/orm.test.js | 31 +++++++++++++++++++++++++++++++ test/test.js | 1 + 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 db/orm.test.js diff --git a/db/orm.js b/db/orm.js index 424ede5..6195753 100644 --- a/db/orm.js +++ b/db/orm.js @@ -32,6 +32,7 @@ class From { this.sql = "" this.cols = [] this.using = [] + this.isPluck = false } /** @@ -69,6 +70,7 @@ class From { const r = this r.constructor = Pluck r.cols = [col] + r.isPluck = true return r } @@ -89,7 +91,8 @@ class From { } sql += this.sql /** @type {U.Prepared, Col>>} */ - const prepared = db.prepare(sql) + let prepared = db.prepare(sql) + if (this.isPluck) prepared = prepared.pluck() return prepared } diff --git a/db/orm.test.js b/db/orm.test.js new file mode 100644 index 0000000..6043e77 --- /dev/null +++ b/db/orm.test.js @@ -0,0 +1,31 @@ +// @ts-check + +const {test} = require("supertape") +const data = require("../test/data") + +const {db, select, from} = require("../passthrough") + +test("orm: select: get works", t => { + const row = select("guild_space", "guild_id", "WHERE space_id = ?").get("!jjWAGMeQdNrVZSSfvz:cadence.moe") + t.equal(row?.guild_id, data.guild.general.id) +}) + +test("orm: from: get works", t => { + const row = from("guild_space").select("guild_id").and("WHERE space_id = ?").get("!jjWAGMeQdNrVZSSfvz:cadence.moe") + t.equal(row?.guild_id, data.guild.general.id) +}) + +test("orm: select: get pluck works", t => { + const guildID = select("guild_space", "guild_id", "WHERE space_id = ?").pluck().get("!jjWAGMeQdNrVZSSfvz:cadence.moe") + t.equal(guildID, data.guild.general.id) +}) + +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) +}) + +test("orm: from: join and pluck works", t => { + const mxid = from("sim").join("sim_member", "mxid").and("WHERE discord_id = ? AND room_id = ?").pluck("mxid").get("771520384671416320", "!uCtjHhfGlYbVnPVlkG:cadence.moe") + t.equal(mxid, "@_ooye_bojack_horseman:cadence.moe") +}) diff --git a/test/test.js b/test/test.js index f158ddc..c2ec57b 100644 --- a/test/test.js +++ b/test/test.js @@ -25,6 +25,7 @@ passthrough.select = orm.select const file = sync.require("../matrix/file") file._actuallyUploadDiscordFileToMxc = function(url, res) { throw new Error(`Not allowed to upload files during testing.\nURL: ${url}`) } +require("../db/orm.test") require("../matrix/kstate.test") require("../matrix/api.test") require("../matrix/read-registration.test")