mirror of
https://github.com/mautrix/whatsapp.git
synced 2026-05-16 02:26:53 -04:00
100 lines
4.4 KiB
SQL
100 lines
4.4 KiB
SQL
-- v0 -> v9 (compatible with v3+): Latest revision
|
|
|
|
CREATE TABLE whatsapp_poll_option_id (
|
|
bridge_id TEXT NOT NULL,
|
|
msg_mxid TEXT NOT NULL,
|
|
opt_id TEXT NOT NULL,
|
|
opt_hash bytea NOT NULL CHECK ( length(opt_hash) = 32 ),
|
|
|
|
PRIMARY KEY (bridge_id, msg_mxid, opt_id),
|
|
CONSTRAINT whatsapp_poll_option_unique_hash UNIQUE (bridge_id, msg_mxid, opt_hash),
|
|
CONSTRAINT message_mxid_fkey FOREIGN KEY (bridge_id, msg_mxid)
|
|
REFERENCES message (bridge_id, mxid) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE whatsapp_history_sync_conversation (
|
|
bridge_id TEXT NOT NULL,
|
|
user_login_id TEXT NOT NULL,
|
|
chat_jid TEXT NOT NULL,
|
|
|
|
last_message_timestamp BIGINT,
|
|
archived BOOLEAN,
|
|
pinned BOOLEAN,
|
|
mute_end_time BIGINT,
|
|
end_of_history_transfer_type INTEGER,
|
|
ephemeral_expiration INTEGER,
|
|
ephemeral_setting_timestamp BIGINT,
|
|
marked_as_unread BOOLEAN,
|
|
unread_count INTEGER,
|
|
synced_login_ts BIGINT,
|
|
|
|
PRIMARY KEY (bridge_id, user_login_id, chat_jid),
|
|
CONSTRAINT whatsapp_history_sync_conversation_user_login_fkey FOREIGN KEY (bridge_id, user_login_id)
|
|
REFERENCES user_login (bridge_id, id) ON UPDATE CASCADE ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE whatsapp_history_sync_message (
|
|
bridge_id TEXT NOT NULL,
|
|
user_login_id TEXT NOT NULL,
|
|
chat_jid TEXT NOT NULL,
|
|
sender_jid TEXT NOT NULL,
|
|
message_id TEXT NOT NULL,
|
|
timestamp BIGINT NOT NULL,
|
|
data bytea NOT NULL,
|
|
inserted_time BIGINT NOT NULL,
|
|
|
|
PRIMARY KEY (bridge_id, user_login_id, chat_jid, sender_jid, message_id),
|
|
CONSTRAINT whatsapp_history_sync_message_user_login_fkey FOREIGN KEY (bridge_id, user_login_id)
|
|
REFERENCES user_login (bridge_id, id) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
CONSTRAINT whatsapp_history_sync_message_conversation_fkey FOREIGN KEY (bridge_id, user_login_id, chat_jid)
|
|
REFERENCES whatsapp_history_sync_conversation (bridge_id, user_login_id, chat_jid) ON UPDATE CASCADE ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE whatsapp_media_backfill_request (
|
|
bridge_id TEXT NOT NULL,
|
|
user_login_id TEXT NOT NULL,
|
|
message_id TEXT NOT NULL,
|
|
_part_id TEXT NOT NULL DEFAULT '',
|
|
|
|
portal_id TEXT NOT NULL,
|
|
portal_receiver TEXT NOT NULL,
|
|
|
|
media_key bytea,
|
|
status INTEGER NOT NULL,
|
|
error TEXT NOT NULL,
|
|
|
|
PRIMARY KEY (bridge_id, user_login_id, message_id),
|
|
CONSTRAINT whatsapp_media_backfill_request_user_login_fkey FOREIGN KEY (bridge_id, user_login_id)
|
|
REFERENCES user_login (bridge_id, id) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
CONSTRAINT whatsapp_media_backfill_request_portal_fkey FOREIGN KEY (bridge_id, portal_id, portal_receiver)
|
|
REFERENCES portal (bridge_id, id, receiver) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
CONSTRAINT whatsapp_media_backfill_request_message_fkey FOREIGN KEY (bridge_id, portal_receiver, message_id, _part_id)
|
|
REFERENCES message (bridge_id, room_receiver, id, part_id) ON UPDATE CASCADE ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX whatsapp_media_backfill_request_portal_idx ON whatsapp_media_backfill_request (bridge_id, portal_id, portal_receiver);
|
|
CREATE INDEX whatsapp_media_backfill_request_message_idx ON whatsapp_media_backfill_request (bridge_id, portal_receiver, message_id, _part_id);
|
|
|
|
CREATE TABLE whatsapp_history_sync_notification (
|
|
-- only: sqlite (line commented)
|
|
-- rowid INTEGER PRIMARY KEY,
|
|
-- only: postgres
|
|
rowid BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
|
|
bridge_id TEXT NOT NULL,
|
|
user_login_id TEXT NOT NULL,
|
|
data bytea NOT NULL,
|
|
|
|
CONSTRAINT whatsapp_history_sync_notification_user_login_fkey FOREIGN KEY (bridge_id, user_login_id)
|
|
REFERENCES user_login (bridge_id, id) ON UPDATE CASCADE ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX whatsapp_history_sync_notification_login_idx ON whatsapp_history_sync_notification (bridge_id, user_login_id);
|
|
|
|
CREATE TABLE whatsapp_avatar_cache (
|
|
entity_jid TEXT NOT NULL,
|
|
avatar_id TEXT NOT NULL,
|
|
direct_path TEXT NOT NULL,
|
|
expiry BIGINT NOT NULL,
|
|
gone BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
PRIMARY KEY (entity_jid, avatar_id)
|
|
);
|