From 6f7ed829b80d3886ab2f1739f433b8a4258eee48 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 5 Oct 2024 02:23:58 +1300 Subject: [PATCH] Create and populate guild_id column --- scripts/setup.js | 1 - scripts/start-server.js | 1 - src/d2m/discord-packets.js | 45 ++++++++++++------- .../0015-add-guild-id-to-channel-room.sql | 5 +++ start.js | 1 - test/test.js | 1 - 6 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 src/db/migrations/0015-add-guild-id-to-channel-room.sql diff --git a/scripts/setup.js b/scripts/setup.js index 13c2492..f1817b7 100644 --- a/scripts/setup.js +++ b/scripts/setup.js @@ -39,7 +39,6 @@ const passthrough = require("../src/passthrough") const db = new sqlite("ooye.db") const migrate = require("../src/db/migrate") -/** @type {import("heatsync").default} */ // @ts-ignore const sync = new HeatSync({watchFS: false}) Object.assign(passthrough, {sync, db}) diff --git a/scripts/start-server.js b/scripts/start-server.js index 430b3ba..f09c458 100755 --- a/scripts/start-server.js +++ b/scripts/start-server.js @@ -12,7 +12,6 @@ const {reg} = require("../src/matrix/read-registration") const passthrough = require("../src/passthrough") const db = new sqlite("ooye.db") -/** @type {import("heatsync").default} */ // @ts-ignore const sync = new HeatSync() Object.assign(passthrough, {sync, db}) diff --git a/src/d2m/discord-packets.js b/src/d2m/discord-packets.js index f619f2b..5956ac5 100644 --- a/src/d2m/discord-packets.js +++ b/src/d2m/discord-packets.js @@ -4,7 +4,11 @@ const DiscordTypes = require("discord-api-types/v10") const passthrough = require("../passthrough") -const { sync } = passthrough +const {sync, db} = passthrough + +function populateGuildID(guildID, channelID) { + db.prepare("UPDATE channel_room SET guild_id = ? WHERE channel_id = ?").run(guildID, channelID) +} const utils = { /** @@ -36,13 +40,16 @@ const utils = { channel.guild_id = message.d.id arr.push(channel.id) client.channels.set(channel.id, channel) + populateGuildID(message.d.id, channel.id) } for (const thread of message.d.threads || []) { // @ts-ignore thread.guild_id = message.d.id arr.push(thread.id) client.channels.set(thread.id, thread) + populateGuildID(message.d.id, thread.id) } + if (listen === "full") { eventDispatcher.checkMissedExpressions(message.d) eventDispatcher.checkMissedPins(client, message.d) @@ -91,7 +98,11 @@ const utils = { } else if (message.t === "THREAD_CREATE") { client.channels.set(message.d.id, message.d) - + if (message.d["guild_id"]) { + populateGuildID(message.d["guild_id"], message.d.id) + const channels = client.guildChannelMap.get(message.d["guild_id"]) + if (channels && !channels.includes(message.d.id)) channels.push(message.d.id) + } } else if (message.t === "CHANNEL_UPDATE" || message.t === "THREAD_UPDATE") { client.channels.set(message.d.id, message.d) @@ -113,21 +124,21 @@ const utils = { client.guildChannelMap.delete(message.d.id) - } else if (message.t === "CHANNEL_CREATE" || message.t === "CHANNEL_DELETE") { - if (message.t === "CHANNEL_CREATE") { - client.channels.set(message.d.id, message.d) - if (message.d["guild_id"]) { // obj[prop] notation can be used to access a property without typescript complaining that it doesn't exist on all values something can have - const channels = client.guildChannelMap.get(message.d["guild_id"]) - if (channels && !channels.includes(message.d.id)) channels.push(message.d.id) - } - } else { - client.channels.delete(message.d.id) - if (message.d["guild_id"]) { - const channels = client.guildChannelMap.get(message.d["guild_id"]) - if (channels) { - const previous = channels.indexOf(message.d.id) - if (previous !== -1) channels.splice(previous, 1) - } + } else if (message.t === "CHANNEL_CREATE") { + client.channels.set(message.d.id, message.d) + if (message.d["guild_id"]) { // obj[prop] notation can be used to access a property without typescript complaining that it doesn't exist on all values something can have + populateGuildID(message.d["guild_id"], message.d.id) + const channels = client.guildChannelMap.get(message.d["guild_id"]) + if (channels && !channels.includes(message.d.id)) channels.push(message.d.id) + } + + } else if (message.t === "CHANNEL_DELETE") { + client.channels.delete(message.d.id) + if (message.d["guild_id"]) { + const channels = client.guildChannelMap.get(message.d["guild_id"]) + if (channels) { + const previous = channels.indexOf(message.d.id) + if (previous !== -1) channels.splice(previous, 1) } } } diff --git a/src/db/migrations/0015-add-guild-id-to-channel-room.sql b/src/db/migrations/0015-add-guild-id-to-channel-room.sql new file mode 100644 index 0000000..81342e4 --- /dev/null +++ b/src/db/migrations/0015-add-guild-id-to-channel-room.sql @@ -0,0 +1,5 @@ +BEGIN TRANSACTION; + +ALTER TABLE channel_room ADD COLUMN guild_id TEXT; + +COMMIT; diff --git a/start.js b/start.js index be434f0..4ee547b 100755 --- a/start.js +++ b/start.js @@ -9,7 +9,6 @@ const {reg} = require("./src/matrix/read-registration") const passthrough = require("./src/passthrough") const db = new sqlite("ooye.db") -/** @type {import("heatsync").default} */ // @ts-ignore const sync = new HeatSync() Object.assign(passthrough, {sync, db}) diff --git a/test/test.js b/test/test.js index ee63834..5f20a80 100644 --- a/test/test.js +++ b/test/test.js @@ -25,7 +25,6 @@ reg.as_token = "baby" reg.hs_token = "baby" reg.ooye.bridge_origin = "https://bridge.example.org" -/** @type {import("heatsync").default} */ // @ts-ignore const sync = new HeatSync({watchFS: false}) const discord = {