mirror of
https://github.com/mautrix/signal.git
synced 2026-05-15 21:56:53 -04:00
196 lines
7.6 KiB
SQL
196 lines
7.6 KiB
SQL
-- v0 -> v27 (compatible with v13+): Latest revision
|
|
CREATE TABLE signalmeow_device (
|
|
aci_uuid TEXT PRIMARY KEY,
|
|
|
|
aci_identity_key_pair bytea NOT NULL,
|
|
registration_id INTEGER NOT NULL CHECK ( registration_id >= 0 AND registration_id < 4294967296 ),
|
|
|
|
pni_uuid TEXT NOT NULL,
|
|
pni_identity_key_pair bytea NOT NULL,
|
|
pni_registration_id INTEGER NOT NULL CHECK ( pni_registration_id >= 0 AND pni_registration_id < 4294967296 ),
|
|
|
|
device_id INTEGER NOT NULL,
|
|
number TEXT NOT NULL DEFAULT '',
|
|
password TEXT NOT NULL DEFAULT '',
|
|
|
|
master_key bytea,
|
|
account_record bytea,
|
|
account_entropy_pool TEXT,
|
|
ephemeral_backup_key bytea,
|
|
media_root_backup_key bytea
|
|
);
|
|
|
|
CREATE TABLE signalmeow_pre_keys (
|
|
account_id TEXT NOT NULL,
|
|
service_id TEXT NOT NULL,
|
|
key_id INTEGER NOT NULL,
|
|
is_signed BOOLEAN NOT NULL,
|
|
key_pair bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, service_id, key_id, is_signed),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_kyber_pre_keys (
|
|
account_id TEXT NOT NULL,
|
|
service_id TEXT NOT NULL,
|
|
key_id INTEGER NOT NULL,
|
|
key_pair bytea NOT NULL,
|
|
is_last_resort BOOLEAN NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, service_id, key_id),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_identity_keys (
|
|
account_id TEXT NOT NULL,
|
|
their_service_id TEXT NOT NULL,
|
|
key bytea NOT NULL,
|
|
trust_level TEXT NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, their_service_id),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_sessions (
|
|
account_id TEXT NOT NULL,
|
|
service_id TEXT NOT NULL,
|
|
their_service_id TEXT NOT NULL,
|
|
their_device_id INTEGER NOT NULL,
|
|
record bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, service_id, their_service_id, their_device_id),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_event_buffer (
|
|
account_id TEXT NOT NULL,
|
|
ciphertext_hash bytea NOT NULL,
|
|
plaintext bytea,
|
|
server_timestamp BIGINT NOT NULL,
|
|
insert_timestamp BIGINT NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, ciphertext_hash),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_profile_keys (
|
|
account_id TEXT NOT NULL,
|
|
their_aci_uuid TEXT NOT NULL,
|
|
key bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, their_aci_uuid),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_sender_keys (
|
|
account_id TEXT NOT NULL,
|
|
sender_uuid TEXT NOT NULL, -- note: this may actually be a service id
|
|
sender_device_id INTEGER NOT NULL,
|
|
distribution_id TEXT NOT NULL,
|
|
key_record bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, sender_uuid, sender_device_id, distribution_id),
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_outbound_sender_key_info (
|
|
account_id TEXT NOT NULL,
|
|
group_id TEXT NOT NULL,
|
|
distribution_id TEXT NOT NULL,
|
|
shared_with jsonb NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, group_id),
|
|
CONSTRAINT signalmeow_outbound_sender_key_info_device_fkey
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_groups (
|
|
account_id TEXT NOT NULL,
|
|
group_identifier TEXT NOT NULL,
|
|
master_key TEXT NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, group_identifier),
|
|
CONSTRAINT signalmeow_groups_device_fkey
|
|
FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE signalmeow_recipients (
|
|
account_id TEXT NOT NULL,
|
|
aci_uuid TEXT,
|
|
pni_uuid TEXT,
|
|
e164_number TEXT NOT NULL DEFAULT '',
|
|
contact_name TEXT NOT NULL DEFAULT '',
|
|
contact_avatar_hash TEXT NOT NULL DEFAULT '',
|
|
nickname TEXT NOT NULL DEFAULT '',
|
|
profile_key bytea,
|
|
profile_name TEXT NOT NULL DEFAULT '',
|
|
profile_about TEXT NOT NULL DEFAULT '',
|
|
profile_about_emoji TEXT NOT NULL DEFAULT '',
|
|
profile_avatar_path TEXT NOT NULL DEFAULT '',
|
|
profile_fetched_at BIGINT,
|
|
needs_pni_signature BOOLEAN NOT NULL DEFAULT false,
|
|
blocked BOOLEAN NOT NULL DEFAULT false,
|
|
whitelisted BOOLEAN,
|
|
|
|
CONSTRAINT signalmeow_contacts_account_id_fkey FOREIGN KEY (account_id) REFERENCES signalmeow_device (aci_uuid)
|
|
ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT signalmeow_contacts_aci_unique UNIQUE (account_id, aci_uuid),
|
|
CONSTRAINT signalmeow_contacts_pni_unique UNIQUE (account_id, pni_uuid)
|
|
);
|
|
|
|
CREATE TABLE signalmeow_unregistered_users (
|
|
aci_uuid uuid PRIMARY KEY
|
|
);
|
|
|
|
CREATE TABLE signalmeow_backup_recipient (
|
|
account_id TEXT NOT NULL,
|
|
recipient_id BIGINT NOT NULL,
|
|
|
|
aci_uuid TEXT,
|
|
pni_uuid TEXT,
|
|
|
|
group_master_key TEXT,
|
|
|
|
data bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, recipient_id),
|
|
CONSTRAINT signalmeow_backup_recipient_device_fkey FOREIGN KEY (account_id)
|
|
REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
CREATE INDEX signalmeow_backup_recipient_group_idx ON signalmeow_backup_recipient (account_id, group_master_key);
|
|
CREATE INDEX signalmeow_backup_recipient_aci_idx ON signalmeow_backup_recipient (account_id, aci_uuid);
|
|
|
|
CREATE TABLE signalmeow_backup_chat (
|
|
account_id TEXT NOT NULL,
|
|
chat_id BIGINT NOT NULL,
|
|
recipient_id BIGINT NOT NULL,
|
|
data bytea NOT NULL,
|
|
|
|
latest_message_id BIGINT,
|
|
total_message_count INTEGER,
|
|
|
|
PRIMARY KEY (account_id, chat_id),
|
|
CONSTRAINT signalmeow_backup_chat_device_fkey FOREIGN KEY (account_id)
|
|
REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT signalmeow_backup_chat_recipient_fkey FOREIGN KEY (account_id, recipient_id)
|
|
REFERENCES signalmeow_backup_recipient (account_id, recipient_id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
CREATE INDEX signalmeow_backup_chat_recipient_id_idx ON signalmeow_backup_chat (account_id, recipient_id);
|
|
|
|
CREATE TABLE signalmeow_backup_message (
|
|
account_id TEXT NOT NULL,
|
|
chat_id BIGINT NOT NULL,
|
|
sender_id BIGINT NOT NULL,
|
|
message_id BIGINT NOT NULL,
|
|
data bytea NOT NULL,
|
|
|
|
PRIMARY KEY (account_id, sender_id, message_id),
|
|
CONSTRAINT signalmeow_backup_message_chat_fkey FOREIGN KEY (account_id, chat_id)
|
|
REFERENCES signalmeow_backup_chat (account_id, chat_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT signalmeow_backup_message_sender_fkey FOREIGN KEY (account_id, sender_id)
|
|
REFERENCES signalmeow_backup_recipient (account_id, recipient_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT signalmeow_backup_message_device_fkey FOREIGN KEY (account_id)
|
|
REFERENCES signalmeow_device (aci_uuid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
CREATE INDEX signalmeow_backup_message_chat_id_idx ON signalmeow_backup_message (account_id, chat_id);
|