Add scripts for database migration
This commit is contained in:
parent
ae3a86bff2
commit
c9bc6ac629
4 changed files with 40 additions and 2 deletions
|
@ -1,4 +1,3 @@
|
|||
BEGIN TRANSACTION;
|
||||
CREATE TABLE IF NOT EXISTS "sim" (
|
||||
"discord_id" TEXT NOT NULL,
|
||||
"sim_name" TEXT NOT NULL UNIQUE,
|
||||
|
@ -6,18 +5,21 @@ CREATE TABLE IF NOT EXISTS "sim" (
|
|||
"mxid" TEXT NOT NULL,
|
||||
PRIMARY KEY("discord_id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "webhook" (
|
||||
"channel_id" TEXT NOT NULL,
|
||||
"webhook_id" TEXT NOT NULL,
|
||||
"webhook_token" TEXT NOT NULL,
|
||||
PRIMARY KEY("channel_id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sim_member" (
|
||||
"mxid" TEXT NOT NULL,
|
||||
"room_id" TEXT NOT NULL,
|
||||
"profile_event_content_hash" BLOB,
|
||||
PRIMARY KEY("room_id","mxid")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "member_cache" (
|
||||
"room_id" TEXT NOT NULL,
|
||||
"mxid" TEXT NOT NULL,
|
||||
|
@ -25,16 +27,19 @@ CREATE TABLE IF NOT EXISTS "member_cache" (
|
|||
"avatar_url" TEXT,
|
||||
PRIMARY KEY("room_id","mxid")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "file" (
|
||||
"discord_url" TEXT NOT NULL,
|
||||
"mxc_url" TEXT NOT NULL,
|
||||
PRIMARY KEY("discord_url")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "guild_space" (
|
||||
"guild_id" TEXT NOT NULL,
|
||||
"space_id" TEXT NOT NULL,
|
||||
PRIMARY KEY("guild_id")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "channel_room" (
|
||||
"channel_id" TEXT NOT NULL,
|
||||
"room_id" TEXT NOT NULL,
|
||||
|
@ -44,11 +49,13 @@ CREATE TABLE IF NOT EXISTS "channel_room" (
|
|||
"custom_avatar" TEXT,
|
||||
PRIMARY KEY("channel_id","room_id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "message_channel" (
|
||||
"message_id" TEXT NOT NULL,
|
||||
"channel_id" TEXT NOT NULL,
|
||||
PRIMARY KEY("message_id")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "event_message" (
|
||||
"event_id" TEXT NOT NULL,
|
||||
"message_id" TEXT NOT NULL,
|
||||
|
@ -58,11 +65,13 @@ CREATE TABLE IF NOT EXISTS "event_message" (
|
|||
"source" INTEGER NOT NULL,
|
||||
PRIMARY KEY("message_id","event_id")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "lottie" (
|
||||
"id" TEXT NOT NULL,
|
||||
"mxc" TEXT NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "emoji" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
|
@ -70,10 +79,10 @@ CREATE TABLE IF NOT EXISTS "emoji" (
|
|||
"mxc_url" TEXT NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "reaction" (
|
||||
"hashed_event_id" INTEGER NOT NULL,
|
||||
"message_id" TEXT NOT NULL,
|
||||
"encoded_emoji" TEXT NOT NULL,
|
||||
PRIMARY KEY ("hashed_event_id")
|
||||
) WITHOUT ROWID;
|
||||
COMMIT;
|
13
db/migrations/0002-optimise-profile-content.js
Normal file
13
db/migrations/0002-optimise-profile-content.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
module.exports = async function(db) {
|
||||
const hasher = await require("xxhash-wasm")()
|
||||
const contents = db.prepare("SELECT distinct hashed_profile_content FROM sim_member").pluck().all()
|
||||
const stmt = db.prepare("UPDATE sim_member SET hashed_profile_content = ? WHERE hashed_profile_content = ?")
|
||||
db.transaction(() => {
|
||||
for (const s of contents) {
|
||||
if (!Buffer.isBuffer(s)) s = Buffer.from(s)
|
||||
const unsignedHash = hasher.h64(eventID)
|
||||
const signedHash = unsignedHash - 0x8000000000000000n // shifting down to signed 64-bit range
|
||||
stmt.run(s, signedHash)
|
||||
}
|
||||
})()
|
||||
}
|
16
db/migrations/0002-optimise-profile-content.sql
Normal file
16
db/migrations/0002-optimise-profile-content.sql
Normal file
|
@ -0,0 +1,16 @@
|
|||
-- Change hashed_profile_content column affinity to INTEGER
|
||||
|
||||
CREATE TABLE "new_sim_member" (
|
||||
"mxid" TEXT NOT NULL,
|
||||
"room_id" TEXT NOT NULL,
|
||||
"hashed_profile_content" INTEGER,
|
||||
PRIMARY KEY("room_id","mxid")
|
||||
) WITHOUT ROWID;
|
||||
|
||||
INSERT INTO new_sim_member SELECT * FROM sim_member;
|
||||
|
||||
DROP TABLE sim_member;
|
||||
|
||||
ALTER TABLE new_sim_member RENAME TO sim_member;
|
||||
|
||||
VACUUM;
|
Loading…
Reference in a new issue