-- Device table
CREATE TABLE device (
device_id INTEGER PRIMARY KEY AUTOINCREMENT,
data BLOB NOT NULL
);
-- Signal protocol tables
CREATE TABLE identities (
device_id INTEGER NOT NULL,
address TEXT NOT NULL,
key BLOB NOT NULL,
PRIMARY KEY (device_id, address)
);
CREATE TABLE sessions (
device_id INTEGER NOT NULL,
address TEXT NOT NULL,
record BLOB NOT NULL,
PRIMARY KEY (device_id, address)
);
CREATE TABLE prekeys (
device_id INTEGER NOT NULL,
prekey_id INTEGER NOT NULL,
record BLOB NOT NULL,
uploaded BOOLEAN NOT NULL,
PRIMARY KEY (device_id, prekey_id)
);
CREATE TABLE signed_prekeys (
device_id INTEGER NOT NULL,
signed_prekey_id INTEGER NOT NULL,
record BLOB NOT NULL,
PRIMARY KEY (device_id, signed_prekey_id)
);
CREATE TABLE sender_keys (
device_id INTEGER NOT NULL,
address TEXT NOT NULL,
record BLOB NOT NULL,
PRIMARY KEY (device_id, address)
);
-- App state sync tables
CREATE TABLE app_state_sync_keys (
device_id INTEGER NOT NULL,
key_id BLOB NOT NULL,
key_data BLOB NOT NULL,
fingerprint BLOB NOT NULL,
timestamp INTEGER NOT NULL,
PRIMARY KEY (device_id, key_id)
);
CREATE TABLE app_state_versions (
device_id INTEGER NOT NULL,
name TEXT NOT NULL,
version INTEGER NOT NULL,
hash BLOB,
PRIMARY KEY (device_id, name)
);
CREATE TABLE app_state_mutation_macs (
device_id INTEGER NOT NULL,
name TEXT NOT NULL,
version INTEGER NOT NULL,
index_mac BLOB NOT NULL,
value_mac BLOB NOT NULL,
PRIMARY KEY (device_id, name, version, index_mac)
);
-- Protocol tables
CREATE TABLE skdm_recipients (
device_id INTEGER NOT NULL,
group_jid TEXT NOT NULL,
device_jid TEXT NOT NULL,
timestamp INTEGER NOT NULL,
PRIMARY KEY (device_id, group_jid, device_jid)
);
CREATE TABLE lid_pn_mappings (
device_id INTEGER NOT NULL,
lid TEXT NOT NULL,
phone_number TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
learning_source TEXT NOT NULL,
PRIMARY KEY (device_id, lid)
);
CREATE TABLE device_lists (
device_id INTEGER NOT NULL,
user TEXT NOT NULL,
devices BLOB NOT NULL,
timestamp INTEGER NOT NULL,
phash TEXT,
PRIMARY KEY (device_id, user)
);
CREATE TABLE tc_tokens (
device_id INTEGER NOT NULL,
jid TEXT NOT NULL,
token BLOB NOT NULL,
token_timestamp INTEGER NOT NULL,
sender_timestamp INTEGER,
PRIMARY KEY (device_id, jid)
);