commit 46b5e07c4a108df4e1f8ffd1d8754c424afd5248
parent c65c792217b4478acb1c4c7dc03e7c74ddc50779
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 19 May 2023 20:37:28 -0700
simplify query
Diffstat:
2 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/cmd/dkf/migrations/130.sql b/cmd/dkf/migrations/130.sql
@@ -0,0 +1,4 @@
+-- +migrate Up
+CREATE INDEX chat_room_user_groups_room_id_user_id_idx ON chat_room_user_groups (room_id, user_id);
+
+-- +migrate Down
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -302,8 +302,9 @@ func (d *DkfDB) GetChatMessages(roomID RoomID, username string, userID UserID, d
Preload("Room").
Preload("Group").
Limit(150).
- Where(`room_id = ? AND group_id IS NULL`, roomID).
+ Where(`room_id = ?`, roomID).
Order("id DESC")
+ q = q.Where(`group_id IS NULL OR group_id IN (SELECT group_id FROM chat_room_user_groups g WHERE g.room_id = ? AND g.user_id = ?)`, roomID, userID)
if !displayIgnoredMessages {
q = q.Where(`id NOT IN (SELECT message_id FROM ignored_messages WHERE user_id = ?)`, userID)
}
@@ -348,22 +349,7 @@ func (d *DkfDB) GetChatMessages(roomID RoomID, username string, userID UserID, d
err = q2.Find(&out2).Error
}
- mergedTmp := sortedMerge(out1, out2, cmp)
-
- //-----------
-
- qg := d.db.
- Preload("User").
- Preload("ToUser").
- Preload("Room").
- Preload("Group").
- Limit(150).
- Where(`room_id = ? AND group_id IN (SELECT group_id FROM chat_room_user_groups g WHERE g.room_id = ? AND g.user_id = ?)`, roomID, roomID, userID).
- Order("id DESC")
- var out3 []ChatMessage
- err = qg.Find(&out3).Error
-
- out = sortedMerge(mergedTmp, out3, cmp)
+ out = sortedMerge(out1, out2, cmp)
return
}