123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # Migration for Matrix Store
- from datetime import datetime
- def migration(conn):
- with conn.cursor() as cursor:
- # Create accounts table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS accounts (
- id INTEGER PRIMARY KEY,
- user_id VARCHAR NOT NULL,
- device_id VARCHAR NOT NULL,
- shared_account INTEGER NOT NULL,
- pickle VARCHAR NOT NULL
- );
- """)
- # Create device_keys table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS device_keys (
- device_id TEXT PRIMARY KEY,
- account_id INTEGER NOT NULL,
- user_id TEXT NOT NULL,
- display_name TEXT,
- deleted BOOLEAN NOT NULL DEFAULT 0,
- UNIQUE (account_id, user_id, device_id),
- FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
- );
- CREATE TABLE IF NOT EXISTS keys (
- key_type TEXT NOT NULL,
- key TEXT NOT NULL,
- device_id VARCHAR NOT NULL,
- UNIQUE (key_type, device_id),
- FOREIGN KEY (device_id) REFERENCES device_keys(device_id) ON DELETE CASCADE
- );
- """)
- # Create device_trust_state table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS device_trust_state (
- device_id VARCHAR PRIMARY KEY,
- state INTEGER NOT NULL,
- FOREIGN KEY(device_id) REFERENCES device_keys(device_id) ON DELETE CASCADE
- );
- """)
- # Create olm_sessions table
- cursor.execute("""
- CREATE SEQUENCE IF NOT EXISTS olm_sessions_id_seq START 1;
- CREATE TABLE IF NOT EXISTS olm_sessions (
- id INTEGER PRIMARY KEY DEFAULT nextval('olm_sessions_id_seq'),
- account_id INTEGER NOT NULL,
- sender_key TEXT NOT NULL,
- session BLOB NOT NULL,
- session_id VARCHAR NOT NULL,
- creation_time TIMESTAMP NOT NULL,
- last_usage_date TIMESTAMP NOT NULL,
- FOREIGN KEY (account_id) REFERENCES accounts (id) ON DELETE CASCADE
- );
- """)
- # Create inbound_group_sessions table
- cursor.execute("""
- CREATE SEQUENCE IF NOT EXISTS inbound_group_sessions_id_seq START 1;
- CREATE TABLE IF NOT EXISTS inbound_group_sessions (
- id INTEGER PRIMARY KEY DEFAULT nextval('inbound_group_sessions_id_seq'),
- account_id INTEGER NOT NULL,
- session TEXT NOT NULL,
- fp_key TEXT NOT NULL,
- sender_key TEXT NOT NULL,
- room_id TEXT NOT NULL,
- UNIQUE (account_id, sender_key, fp_key, room_id),
- FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
- );
- CREATE TABLE IF NOT EXISTS forwarded_chains (
- id INTEGER PRIMARY KEY,
- session_id INTEGER NOT NULL,
- sender_key TEXT NOT NULL,
- FOREIGN KEY (session_id) REFERENCES inbound_group_sessions(id) ON DELETE CASCADE
- );
- """)
- # Create outbound_group_sessions table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS outbound_group_sessions (
- id INTEGER PRIMARY KEY,
- account_id INTEGER NOT NULL,
- room_id VARCHAR NOT NULL,
- session_id VARCHAR NOT NULL UNIQUE,
- session BLOB NOT NULL,
- FOREIGN KEY(account_id) REFERENCES accounts(id) ON DELETE CASCADE
- );
- """)
- # Create outgoing_key_requests table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS outgoing_key_requests (
- id INTEGER PRIMARY KEY,
- account_id INTEGER NOT NULL,
- request_id TEXT NOT NULL,
- session_id TEXT NOT NULL,
- room_id TEXT NOT NULL,
- algorithm TEXT NOT NULL,
- FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
- UNIQUE (account_id, request_id)
- );
- """)
- # Create encrypted_rooms table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS encrypted_rooms (
- room_id TEXT NOT NULL,
- account_id INTEGER NOT NULL,
- PRIMARY KEY (room_id, account_id),
- FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
- );
- """)
- # Create sync_tokens table
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS sync_tokens (
- account_id INTEGER PRIMARY KEY,
- token TEXT NOT NULL,
- FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
- );
- """)
-
- cursor.execute(
- "INSERT INTO migrations (id, timestamp) VALUES (2, ?)",
- (datetime.now(),)
- )
- conn.commit()
|