c36d61687a
- Groupchats now support XEP-0313 Message Archive Management (MAM)! - This uses the history stored in the sqlite database, as implemented in the previous commits. - The QUERY-ARCHIVE megafunction builds up a SQL query to get stuff out of the database, in accordance with provided MAM + RSM parameters. - Notably, various hacks are in here that need to be fixed. - IQ 'set's are now processed, which means we needed to add a stub impl of Schrödinger's Chat so people don't drop out of MUCs all of a sudden. (Well, it just responds to every ping indiscriminately...) - Oh also the new presence subscription stuff from earlier is borked.
77 lines
2 KiB
SQL
77 lines
2 KiB
SQL
CREATE TABLE configuration (
|
|
rev INT PRIMARY KEY,
|
|
server VARCHAR NOT NULL,
|
|
port INT NOT NULL,
|
|
component_name VARCHAR NOT NULL,
|
|
shared_secret VARCHAR NOT NULL,
|
|
upload_component_name VARCHAR NOT NULL
|
|
);
|
|
|
|
CREATE TABLE users (
|
|
id INTEGER PRIMARY KEY,
|
|
jid VARCHAR UNIQUE NOT NULL,
|
|
session_data VARCHAR
|
|
);
|
|
|
|
CREATE TABLE user_contacts (
|
|
id INTEGER PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users,
|
|
wa_jid VARCHAR UNIQUE NOT NULL,
|
|
subscription_state VARCHAR NOT NULL DEFAULT 'none',
|
|
avatar_url VARCHAR,
|
|
name VARCHAR,
|
|
notify VARCHAR,
|
|
status VARCHAR
|
|
);
|
|
|
|
CREATE TABLE user_messages (
|
|
id INTEGER PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users,
|
|
xmpp_id VARCHAR NOT NULL,
|
|
wa_id VARCHAR NOT NULL,
|
|
UNIQUE(user_id, wa_id)
|
|
);
|
|
|
|
CREATE TABLE avatar_data (
|
|
avatar_url VARCHAR NOT NULL PRIMARY KEY,
|
|
sha1 VARCHAR NOT NULL,
|
|
image BLOB NOT NULL
|
|
);
|
|
|
|
CREATE TABLE user_chats (
|
|
id INTEGER PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users,
|
|
wa_jid VARCHAR NOT NULL,
|
|
user_resource VARCHAR,
|
|
invitation_state VARCHAR NOT NULL DEFAULT 'none',
|
|
subject VARCHAR
|
|
);
|
|
|
|
CREATE TABLE user_chat_members (
|
|
id INTEGER PRIMARY KEY,
|
|
chat_id INT NOT NULL REFERENCES user_chats,
|
|
wa_jid VARCHAR NOT NULL,
|
|
resource VARCHAR NOT NULL,
|
|
affiliation VARCHAR NOT NULL DEFAULT 'member'
|
|
);
|
|
|
|
CREATE TABLE user_chat_joined (
|
|
id INTEGER PRIMARY KEY,
|
|
chat_id INT NOT NULL REFERENCES user_chats,
|
|
jid VARCHAR NOT NULL
|
|
);
|
|
|
|
CREATE TABLE user_chat_history (
|
|
id INTEGER PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users,
|
|
chat_id INT NOT NULL REFERENCES user_chats,
|
|
user_from VARCHAR NOT NULL,
|
|
ts_unix INT NOT NULL,
|
|
xmpp_id VARCHAR NOT NULL,
|
|
orig_id VARCHAR,
|
|
body VARCHAR NOT NULL,
|
|
oob_url VARCHAR
|
|
);
|
|
|
|
CREATE UNIQUE INDEX user_chat_history_unique ON user_chat_history (user_id, chat_id, xmpp_id);
|