mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-09 16:34:32 -04:00
Co-authored-by: Jonas Platte <jplatte@matrix.org> Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
99 lines
2.5 KiB
SQL
99 lines
2.5 KiB
SQL
-- basic kv data like the database version and store cipher
|
|
CREATE TABLE "kv" (
|
|
"key" TEXT PRIMARY KEY NOT NULL,
|
|
"value" BLOB NOT NULL
|
|
);
|
|
|
|
-- another general-purpose kv table, but with blob keys
|
|
-- used for sync token, filters and other things
|
|
--
|
|
-- in theory, we could use one table for both since sqlite has dynamic typing
|
|
-- (column types are basically meaningless), but this is a cleaner solution
|
|
CREATE TABLE "kv_blob" (
|
|
"key" BLOB PRIMARY KEY NOT NULL,
|
|
"value" BLOB NOT NULL
|
|
);
|
|
|
|
CREATE TABLE "room_info" (
|
|
"room_id" BLOB PRIMARY KEY NOT NULL,
|
|
"stripped" BOOLEAN NOT NULL,
|
|
"data" BLOB NOT NULL
|
|
);
|
|
CREATE INDEX "room_info_room_id_stripped"
|
|
ON "room_info" ("room_id", "stripped");
|
|
|
|
CREATE TABLE "state_event" (
|
|
"room_id" BLOB NOT NULL,
|
|
"event_type" BLOB NOT NULL,
|
|
"state_key" BLOB NOT NULL,
|
|
"stripped" BOOLEAN NOT NULL,
|
|
"event_id" BLOB,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "event_type", "state_key")
|
|
);
|
|
CREATE INDEX "state_event_room_id_event_type_stripped_event_id"
|
|
ON "state_event" ("room_id", "event_type", "stripped", "event_id");
|
|
|
|
CREATE TABLE "global_account_data" (
|
|
"event_type" BLOB PRIMARY KEY NOT NULL,
|
|
"data" BLOB NOT NULL
|
|
);
|
|
|
|
CREATE TABLE "room_account_data" (
|
|
"room_id" BLOB NOT NULL,
|
|
"event_type" BLOB NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "event_type")
|
|
);
|
|
|
|
CREATE TABLE "member" (
|
|
"room_id" BLOB NOT NULL,
|
|
"user_id" BLOB NOT NULL,
|
|
"membership" BLOB NOT NULL,
|
|
"stripped" BOOLEAN NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "user_id")
|
|
);
|
|
CREATE INDEX "member_room_id_membership"
|
|
ON "member" ("room_id", "membership");
|
|
|
|
CREATE TABLE "profile" (
|
|
"room_id" BLOB NOT NULL,
|
|
"user_id" BLOB NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "user_id")
|
|
);
|
|
|
|
CREATE TABLE "receipt" (
|
|
"room_id" BLOB NOT NULL,
|
|
"user_id" BLOB NOT NULL,
|
|
"receipt_type" BLOB NOT NULL,
|
|
"thread" BLOB NOT NULL,
|
|
"event_id" BLOB NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "user_id", "receipt_type", "thread")
|
|
);
|
|
CREATE INDEX "receipt_room_id_receipt_type_thread_id_event_id"
|
|
ON "receipt" ("room_id", "receipt_type", "thread", "event_id");
|
|
|
|
CREATE TABLE "display_name" (
|
|
"room_id" BLOB NOT NULL,
|
|
"name" BLOB NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("room_id", "name")
|
|
);
|
|
|
|
CREATE TABLE "media" (
|
|
"uri" BLOB NOT NULL,
|
|
"format" BLOB NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
|
|
PRIMARY KEY ("uri", "format")
|
|
);
|