|
@@ -20,77 +20,87 @@ from mautrix.util.async_db import UpgradeTable
|
|
|
upgrade_table = UpgradeTable()
|
|
|
|
|
|
|
|
|
-@upgrade_table.register(description="Initial revision")
|
|
|
-async def upgrade_v1(conn: Connection) -> None:
|
|
|
+@upgrade_table.register(description="Latest revision", upgrades_to=8)
|
|
|
+async def upgrade_latest(conn: Connection) -> None:
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE portal (
|
|
|
- thread_id TEXT,
|
|
|
- receiver BIGINT,
|
|
|
- other_user_pk BIGINT,
|
|
|
- mxid TEXT,
|
|
|
- name TEXT,
|
|
|
- encrypted BOOLEAN NOT NULL DEFAULT false,
|
|
|
- PRIMARY KEY (thread_id, receiver)
|
|
|
- )"""
|
|
|
+ thread_id TEXT,
|
|
|
+ receiver BIGINT,
|
|
|
+ other_user_pk BIGINT,
|
|
|
+ mxid TEXT,
|
|
|
+ name TEXT,
|
|
|
+ avatar_url TEXT,
|
|
|
+ name_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ avatar_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ encrypted BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ relay_user_id TEXT,
|
|
|
+ PRIMARY KEY (thread_id, receiver)
|
|
|
+ )"""
|
|
|
)
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE "user" (
|
|
|
- mxid TEXT PRIMARY KEY,
|
|
|
- igpk BIGINT,
|
|
|
- state jsonb,
|
|
|
- notice_room TEXT
|
|
|
- )"""
|
|
|
+ mxid TEXT PRIMARY KEY,
|
|
|
+ igpk BIGINT,
|
|
|
+ state jsonb,
|
|
|
+ seq_id BIGINT,
|
|
|
+ snapshot_at_ms BIGINT,
|
|
|
+ notice_room TEXT
|
|
|
+ )"""
|
|
|
)
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE puppet (
|
|
|
- pk BIGINT PRIMARY KEY,
|
|
|
- name TEXT,
|
|
|
- username TEXT,
|
|
|
- photo_id TEXT,
|
|
|
- photo_mxc TEXT,
|
|
|
- name_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
- avatar_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
- is_registered BOOLEAN NOT NULL DEFAULT false,
|
|
|
- custom_mxid TEXT,
|
|
|
- access_token TEXT,
|
|
|
- next_batch TEXT,
|
|
|
- base_url TEXT
|
|
|
- )"""
|
|
|
+ pk BIGINT PRIMARY KEY,
|
|
|
+ name TEXT,
|
|
|
+ username TEXT,
|
|
|
+ photo_id TEXT,
|
|
|
+ photo_mxc TEXT,
|
|
|
+ name_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ avatar_set BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ is_registered BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ custom_mxid TEXT,
|
|
|
+ access_token TEXT,
|
|
|
+ next_batch TEXT,
|
|
|
+ base_url TEXT
|
|
|
+ )"""
|
|
|
)
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE user_portal (
|
|
|
- "user" BIGINT,
|
|
|
- portal TEXT,
|
|
|
- portal_receiver BIGINT,
|
|
|
- in_community BOOLEAN NOT NULL DEFAULT false,
|
|
|
- FOREIGN KEY (portal, portal_receiver) REFERENCES portal(thread_id, receiver)
|
|
|
- ON UPDATE CASCADE ON DELETE CASCADE
|
|
|
- )"""
|
|
|
+ "user" BIGINT,
|
|
|
+ portal TEXT,
|
|
|
+ portal_receiver BIGINT,
|
|
|
+ in_community BOOLEAN NOT NULL DEFAULT false,
|
|
|
+ FOREIGN KEY (portal, portal_receiver) REFERENCES portal(thread_id, receiver)
|
|
|
+ ON UPDATE CASCADE ON DELETE CASCADE
|
|
|
+ )"""
|
|
|
)
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE message (
|
|
|
- mxid TEXT NOT NULL,
|
|
|
- mx_room TEXT NOT NULL,
|
|
|
- item_id TEXT,
|
|
|
- receiver BIGINT,
|
|
|
- sender BIGINT NOT NULL,
|
|
|
- PRIMARY KEY (item_id, receiver),
|
|
|
- UNIQUE (mxid, mx_room)
|
|
|
- )"""
|
|
|
+ mxid TEXT,
|
|
|
+ mx_room TEXT NOT NULL,
|
|
|
+ item_id TEXT,
|
|
|
+ receiver BIGINT,
|
|
|
+ sender BIGINT NOT NULL,
|
|
|
+
|
|
|
+ client_context TEXT,
|
|
|
+ ig_timestamp BIGINT,
|
|
|
+ PRIMARY KEY (item_id, receiver),
|
|
|
+ UNIQUE (mxid, mx_room)
|
|
|
+ )"""
|
|
|
)
|
|
|
await conn.execute(
|
|
|
"""CREATE TABLE reaction (
|
|
|
- mxid TEXT NOT NULL,
|
|
|
- mx_room TEXT NOT NULL,
|
|
|
- ig_item_id TEXT,
|
|
|
- ig_receiver BIGINT,
|
|
|
- ig_sender BIGINT,
|
|
|
- reaction TEXT NOT NULL,
|
|
|
- PRIMARY KEY (ig_item_id, ig_receiver, ig_sender),
|
|
|
- FOREIGN KEY (ig_item_id, ig_receiver) REFERENCES message(item_id, receiver)
|
|
|
- ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
- UNIQUE (mxid, mx_room)
|
|
|
- )"""
|
|
|
+ mxid TEXT NOT NULL,
|
|
|
+ mx_room TEXT NOT NULL,
|
|
|
+ ig_item_id TEXT,
|
|
|
+ ig_receiver BIGINT,
|
|
|
+ ig_sender BIGINT,
|
|
|
+ reaction TEXT NOT NULL,
|
|
|
+ mx_timestamp BIGINT,
|
|
|
+ PRIMARY KEY (ig_item_id, ig_receiver, ig_sender),
|
|
|
+ FOREIGN KEY (ig_item_id, ig_receiver) REFERENCES message(item_id, receiver)
|
|
|
+ ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
+ UNIQUE (mxid, mx_room)
|
|
|
+ )"""
|
|
|
)
|
|
|
|
|
|
|