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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 h@bK_Z&sTww?e0 delta 101 zcmZozz~AtIXM!|q0|Ntt@k9lC#)gdvOZYhq_yrh1B9nOp5;hh}Fm7&9?BQ(|kZ%`| zXKWXcXPPb`&-{grkzIs=U1Vb+7dzX;%v#>X#?u`>GMZ1