1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
BEGIN TRANSACTION;
PRAGMA user_version = 1;
PRAGMA foreign_keys = ON;
CREATE TABLE users(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
outdated INTEGER DEFAULT 1,
json_data TEXT
);
CREATE TABLE user_devices(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id),
device TEXT NOT NULL,
curve25519_key TEXT,
ed25519_key TEXT,
verification INTEGER DEFAULT 0,
json_data TEXT,
UNIQUE (user_id, device)
);
CREATE TABLE accounts(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
user_device_id INTEGER NOT NULL REFERENCES user_devices(id),
next_batch TEXT,
pickle TEXT,
enabled INTEGER DEFAULT 0,
json_data TEXT,
UNIQUE (user_device_id)
);
CREATE TABLE rooms(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
account_id INTEGER NOT NULL REFERENCES accounts(id),
room_name TEXT NOT NULL,
prev_batch TEXT,
replacement_room_id INTEGER REFERENCES rooms(id),
json_data TEXT,
UNIQUE (account_id, room_name)
);
CREATE TABLE encryption_keys(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
file_url TEXT NOT NULL,
file_sha256 TEXT,
iv TEXT NOT NULL,
version INT DEFAULT 2 NOT NULL,
algorithm INT NOT NULL,
key TEXT NOT NULL,
type INT NOT NULL,
extractable INT DEFAULT 1 NOT NULL,
json_data TEXT,
UNIQUE (file_url)
);
CREATE TABLE session(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
account_id INTEGER NOT NULL REFERENCES accounts(id),
sender_key TEXT NOT NULL,
session_id TEXT NOT NULL,
type INTEGER NOT NULL,
pickle TEXT NOT NULL,
time INT,
json_data TEXT,
UNIQUE (account_id, sender_key, session_id)
);
COMMIT;
|