mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
Merge branch 'master' into remote-desktop
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
|
||||
module Simplex.Chat.Migrations.M20231113_group_forward where
|
||||
|
||||
import Database.SQLite.Simple (Query)
|
||||
import Database.SQLite.Simple.QQ (sql)
|
||||
|
||||
m20231113_group_forward :: Query
|
||||
m20231113_group_forward =
|
||||
[sql|
|
||||
ALTER TABLE group_member_intros ADD COLUMN intro_chat_protocol_version INTEGER NOT NULL DEFAULT 3;
|
||||
CREATE INDEX idx_group_member_intros_re_group_member_id ON group_member_intros(re_group_member_id);
|
||||
|
||||
ALTER TABLE group_members ADD COLUMN invited_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL;
|
||||
ALTER TABLE group_members ADD COLUMN peer_chat_min_version INTEGER NOT NULL DEFAULT 1;
|
||||
ALTER TABLE group_members ADD COLUMN peer_chat_max_version INTEGER NOT NULL DEFAULT 1;
|
||||
CREATE INDEX idx_group_members_invited_by_group_member_id ON group_members(invited_by_group_member_id);
|
||||
|
||||
UPDATE group_members
|
||||
SET (peer_chat_min_version, peer_chat_max_version) = (c.peer_chat_min_version, c.peer_chat_max_version)
|
||||
FROM connections c
|
||||
WHERE c.group_member_id = group_members.group_member_id;
|
||||
|
||||
ALTER TABLE messages ADD COLUMN author_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL;
|
||||
ALTER TABLE messages ADD COLUMN forwarded_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL;
|
||||
CREATE INDEX idx_messages_author_group_member_id ON messages(author_group_member_id);
|
||||
CREATE INDEX idx_messages_forwarded_by_group_member_id ON messages(forwarded_by_group_member_id);
|
||||
CREATE INDEX idx_messages_group_id_shared_msg_id ON messages(group_id, shared_msg_id);
|
||||
|
||||
ALTER TABLE chat_items ADD COLUMN forwarded_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL;
|
||||
CREATE INDEX idx_chat_items_forwarded_by_group_member_id ON chat_items(forwarded_by_group_member_id);
|
||||
|]
|
||||
|
||||
down_m20231113_group_forward :: Query
|
||||
down_m20231113_group_forward =
|
||||
[sql|
|
||||
DROP INDEX idx_chat_items_forwarded_by_group_member_id;
|
||||
ALTER TABLE chat_items DROP COLUMN forwarded_by_group_member_id;
|
||||
|
||||
DROP INDEX idx_messages_group_id_shared_msg_id;
|
||||
DROP INDEX idx_messages_forwarded_by_group_member_id;
|
||||
DROP INDEX idx_messages_author_group_member_id;
|
||||
ALTER TABLE messages DROP COLUMN forwarded_by_group_member_id;
|
||||
ALTER TABLE messages DROP COLUMN author_group_member_id;
|
||||
|
||||
DROP INDEX idx_group_members_invited_by_group_member_id;
|
||||
ALTER TABLE group_members DROP COLUMN peer_chat_max_version;
|
||||
ALTER TABLE group_members DROP COLUMN peer_chat_min_version;
|
||||
ALTER TABLE group_members DROP COLUMN invited_by_group_member_id;
|
||||
|
||||
DROP INDEX idx_group_member_intros_re_group_member_id;
|
||||
ALTER TABLE group_member_intros DROP COLUMN intro_chat_protocol_version;
|
||||
|]
|
||||
@@ -147,6 +147,9 @@ CREATE TABLE group_members(
|
||||
member_profile_id INTEGER REFERENCES contact_profiles ON DELETE SET NULL,
|
||||
show_messages INTEGER NOT NULL DEFAULT 1,
|
||||
xgrplinkmem_received INTEGER NOT NULL DEFAULT 0,
|
||||
invited_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL,
|
||||
peer_chat_min_version INTEGER NOT NULL DEFAULT 1,
|
||||
peer_chat_max_version INTEGER NOT NULL DEFAULT 1,
|
||||
FOREIGN KEY(user_id, local_display_name)
|
||||
REFERENCES display_names(user_id, local_display_name)
|
||||
ON DELETE CASCADE
|
||||
@@ -161,7 +164,8 @@ CREATE TABLE group_member_intros(
|
||||
direct_queue_info BLOB,
|
||||
intro_status TEXT NOT NULL,
|
||||
created_at TEXT CHECK(created_at NOT NULL),
|
||||
updated_at TEXT CHECK(updated_at NOT NULL), -- see GroupMemberIntroStatus
|
||||
updated_at TEXT CHECK(updated_at NOT NULL),
|
||||
intro_chat_protocol_version INTEGER NOT NULL DEFAULT 3, -- see GroupMemberIntroStatus
|
||||
UNIQUE(re_group_member_id, to_group_member_id)
|
||||
);
|
||||
CREATE TABLE files(
|
||||
@@ -322,7 +326,9 @@ CREATE TABLE messages(
|
||||
connection_id INTEGER DEFAULT NULL REFERENCES connections ON DELETE CASCADE,
|
||||
group_id INTEGER DEFAULT NULL REFERENCES groups ON DELETE CASCADE,
|
||||
shared_msg_id BLOB,
|
||||
shared_msg_id_user INTEGER
|
||||
shared_msg_id_user INTEGER,
|
||||
author_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL,
|
||||
forwarded_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL
|
||||
);
|
||||
CREATE TABLE msg_deliveries(
|
||||
msg_delivery_id INTEGER PRIMARY KEY,
|
||||
@@ -372,7 +378,8 @@ CREATE TABLE chat_items(
|
||||
timed_delete_at TEXT,
|
||||
item_live INTEGER,
|
||||
item_deleted_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL,
|
||||
item_deleted_ts TEXT
|
||||
item_deleted_ts TEXT,
|
||||
forwarded_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL
|
||||
);
|
||||
CREATE TABLE chat_item_messages(
|
||||
chat_item_id INTEGER NOT NULL REFERENCES chat_items ON DELETE CASCADE,
|
||||
@@ -782,3 +789,22 @@ CREATE INDEX idx_contact_profiles_contact_link ON contact_profiles(
|
||||
user_id,
|
||||
contact_link
|
||||
);
|
||||
CREATE INDEX idx_group_member_intros_re_group_member_id ON group_member_intros(
|
||||
re_group_member_id
|
||||
);
|
||||
CREATE INDEX idx_group_members_invited_by_group_member_id ON group_members(
|
||||
invited_by_group_member_id
|
||||
);
|
||||
CREATE INDEX idx_messages_author_group_member_id ON messages(
|
||||
author_group_member_id
|
||||
);
|
||||
CREATE INDEX idx_messages_forwarded_by_group_member_id ON messages(
|
||||
forwarded_by_group_member_id
|
||||
);
|
||||
CREATE INDEX idx_messages_group_id_shared_msg_id ON messages(
|
||||
group_id,
|
||||
shared_msg_id
|
||||
);
|
||||
CREATE INDEX idx_chat_items_forwarded_by_group_member_id ON chat_items(
|
||||
forwarded_by_group_member_id
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user