From 36adc30990d47efd8a0cba111e9711c1a17d37a3 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Fri, 18 Aug 2023 17:00:40 +1200 Subject: [PATCH] only include necessary data for testing --- db/data-for-test.sql | 94 +++++++++++++++++++++++++++++++++++++++++++ matrix/file.js | 21 ++++++---- scripts/events.db | Bin 208896 -> 249856 bytes test/test.js | 8 +++- 4 files changed, 114 insertions(+), 9 deletions(-) create mode 100644 db/data-for-test.sql diff --git a/db/data-for-test.sql b/db/data-for-test.sql new file mode 100644 index 0000000..fa04562 --- /dev/null +++ b/db/data-for-test.sql @@ -0,0 +1,94 @@ +BEGIN TRANSACTION; +CREATE TABLE IF NOT EXISTS "guild_space" ( + "guild_id" TEXT NOT NULL UNIQUE, + "space_id" TEXT NOT NULL UNIQUE, + PRIMARY KEY("guild_id") +); +CREATE TABLE IF NOT EXISTS "file" ( + "discord_url" TEXT NOT NULL UNIQUE, + "mxc_url" TEXT NOT NULL UNIQUE, + PRIMARY KEY("discord_url") +); +CREATE TABLE IF NOT EXISTS "sim" ( + "discord_id" TEXT NOT NULL UNIQUE, + "sim_name" TEXT NOT NULL UNIQUE, + "localpart" TEXT NOT NULL UNIQUE, + "mxid" TEXT NOT NULL UNIQUE, + PRIMARY KEY("discord_id") +); +CREATE TABLE IF NOT EXISTS "sim_member" ( + "mxid" TEXT NOT NULL, + "room_id" TEXT NOT NULL, + "profile_event_content_hash" BLOB, + PRIMARY KEY("mxid","room_id") +); +CREATE TABLE IF NOT EXISTS "webhook" ( + "channel_id" TEXT NOT NULL UNIQUE, + "webhook_id" TEXT NOT NULL UNIQUE, + "webhook_token" TEXT NOT NULL, + PRIMARY KEY("channel_id") +); +CREATE TABLE IF NOT EXISTS "channel_room" ( + "channel_id" TEXT NOT NULL UNIQUE, + "room_id" TEXT NOT NULL UNIQUE, + "name" TEXT, + "nick" TEXT, + PRIMARY KEY("channel_id") +); +CREATE TABLE IF NOT EXISTS "event_message" ( + "event_id" TEXT NOT NULL, + "event_type" TEXT, + "event_subtype" TEXT, + "message_id" TEXT NOT NULL, + "channel_id" TEXT, + "part" INTEGER NOT NULL, + "source" INTEGER NOT NULL, + PRIMARY KEY("event_id","message_id") +); +COMMIT; + + + +BEGIN TRANSACTION; + +INSERT INTO guild_space (guild_id, space_id) VALUES +('112760669178241024', '!jjWAGMeQdNrVZSSfvz:cadence.moe'); + +INSERT INTO channel_room (channel_id, room_id, name, nick) VALUES +('112760669178241024', '!kLRqKKUQXcibIMtOpl:cadence.moe', 'heave', 'main'), +('497161350934560778', '!edUxjVdzgUvXDUIQCK:cadence.moe', 'amanda-spam', NULL), +('160197704226439168', '!uCtjHhfGlYbVnPVlkG:cadence.moe', 'the-stanley-parable-channel', 'bots'); + +INSERT INTO sim (discord_id, sim_name, localpart, mxid) VALUES +('0', 'bot', '_ooye_bot', '@_ooye_bot:cadence.moe'), +('820865262526005258', 'crunch_god', '_ooye_crunch_god', '@_ooye_crunch_god:cadence.moe'), +('771520384671416320', 'bojack_horseman', '_ooye_bojack_horseman', '@_ooye_bojack_horseman:cadence.moe'), +('112890272819507200', '.wing.', '_ooye_.wing.', '@_ooye_.wing.:cadence.moe'), +('114147806469554185', 'extremity', '_ooye_extremity', '@_ooye_extremity:cadence.moe'); + +INSERT INTO sim_member (mxid, room_id, profile_event_content_hash) VALUES +('@_ooye_bojack_horseman:cadence.moe', '!uCtjHhfGlYbVnPVlkG:cadence.moe', NULL); + +INSERT INTO event_message (event_id, event_type, event_subtype, message_id, channel_id, part, source) VALUES +('$X16nfVks1wsrhq4E9SSLiqrf2N8KD0erD0scZG7U5xg', 'm.room.message', 'm.text', '1126786462646550579', '112760669178241024', 0, 1), +('$Ij3qo7NxMA4VPexlAiIx2CB9JbsiGhJeyt-2OvkAUe4', 'm.room.message', 'm.text', '1128118177155526666', '112760669178241024', 0, 0), +('$zXSlyI78DQqQwwfPUSzZ1b-nXzbUrCDljJgnGDdoI10', 'm.room.message', 'm.text', '1141619794500649020', '497161350934560778', 0, 1), +('$fdD9OZ55xg3EAsfvLZza5tMhtjUO91Wg3Otuo96TplY', 'm.room.message', 'm.text', '1141206225632112650', '160197704226439168', 0, 1), +('$mtR8cJqM4fKno1bVsm8F4wUVqSntt2sq6jav1lyavuA', 'm.room.message', 'm.text', '1141501302736695316', '112760669178241024', 0, 1), +('$51f4yqHinwnSbPEQ9dCgoyy4qiIJSX0QYYVUnvwyTCI', 'm.room.message', 'm.image', '1141501302736695316', '112760669178241024', 1, 1), +('$51f4yqHinwnSbPEQ9dCgoyy4qiIJSX0QYYVUnvwyTCJ', 'm.room.message', 'm.image', '1141501302736695317', '112760669178241024', 0, 1), +('$vgTKOR5ZTYNMKaS7XvgEIDaOWZtVCEyzLLi5Pc5Gz4M', 'm.room.message', 'm.text', '1128084851279536279', '112760669178241024', 0, 1), +('$YUJFa5j0ZJe7PUvD2DykRt9g51RoadUEYmuJLdSEbJ0', 'm.room.message', 'm.image', '1128084851279536279', '112760669178241024', 1, 1), +('$oLyUTyZ_7e_SUzGNWZKz880ll9amLZvXGbArJCKai2Q', 'm.room.message', 'm.text', '1128084748338741392', '112760669178241024', 0, 1); + +INSERT INTO file (discord_url, mxc_url) VALUES +('https://cdn.discordapp.com/attachments/497161332244742154/1124628646431297546/image.png', 'mxc://cadence.moe/qXoZktDqNtEGuOCZEADAMvhM'), +('https://cdn.discordapp.com/attachments/122155380120748034/1106366167486038016/image.png', 'mxc://cadence.moe/ZDCNYnkPszxGKgObUIFmvjus'), +('https://cdn.discordapp.com/stickers/1106323941183717586.png', 'mxc://cadence.moe/UuUaLwXhkxFRwwWCXipDlBHn'), +('https://cdn.discordapp.com/attachments/112760669178241024/1128084747910918195/skull.webp', 'mxc://cadence.moe/sDxWmDErBhYBxtDcJQgBETes'), +('https://cdn.discordapp.com/attachments/112760669178241024/1141501302497615912/piper_2.png', 'mxc://cadence.moe/KQYdXKRcHWjDYDLPkTOOWOjA'), +('https://cdn.discordapp.com/attachments/112760669178241024/1128084851023675515/RDT_20230704_0936184915846675925224905.jpg', 'mxc://cadence.moe/WlAbFSiNRIHPDEwKdyPeGywa'), +('https://cdn.discordapp.com/guilds/112760669178241024/users/134826546694193153/avatars/38dd359aa12bcd52dd3164126c587f8c.png?size=1024', 'mxc://cadence.moe/rfemHmAtcprjLEiPiEuzPhpl'), +('https://cdn.discordapp.com/icons/112760669178241024/a_f83622e09ead74f0c5c527fe241f8f8c.png?size=1024', 'mxc://cadence.moe/zKXGZhmImMHuGQZWJEFKJbsF'); + +COMMIT; diff --git a/matrix/file.js b/matrix/file.js index 64cd492..965ec1c 100644 --- a/matrix/file.js +++ b/matrix/file.js @@ -40,15 +40,8 @@ async function uploadDiscordFileToMxc(path) { // Download from Discord const promise = fetch(url, {}).then(/** @param {import("node-fetch").Response} res */ async res => { - const body = res.body - // Upload to Matrix - /** @type {import("../types").R.FileUploaded} */ - const root = await mreq.mreq("POST", "/media/v3/upload", body, { - headers: { - "Content-Type": res.headers.get("content-type") - } - }) + const root = await module.exports._actuallyUploadDiscordFileToMxc(url, res) // Store relationship in database db.prepare("INSERT INTO file (discord_url, mxc_url) VALUES (?, ?)").run(url, root.content_uri) @@ -61,6 +54,17 @@ async function uploadDiscordFileToMxc(path) { return promise } +async function _actuallyUploadDiscordFileToMxc(url, res) { + const body = res.body + /** @type {import("../types").R.FileUploaded} */ + const root = await mreq.mreq("POST", "/media/v3/upload", body, { + headers: { + "Content-Type": res.headers.get("content-type") + } + }) + return root +} + function guildIcon(guild) { return `/icons/${guild.id}/${guild.icon}.png?size=${IMAGE_SIZE}` } @@ -102,3 +106,4 @@ module.exports.emoji = emoji module.exports.stickerFormat = stickerFormat module.exports.sticker = sticker module.exports.uploadDiscordFileToMxc = uploadDiscordFileToMxc +module.exports._actuallyUploadDiscordFileToMxc = _actuallyUploadDiscordFileToMxc diff --git a/scripts/events.db b/scripts/events.db index 045e1471b97b6274aebcb9b2f457c3bc3ab5b898..86957d8684d132e60a394c3305b37bd63cad3e1c 100644 GIT binary patch delta 11883 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