dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 46b5e07c4a108df4e1f8ffd1d8754c424afd5248
parent c65c792217b4478acb1c4c7dc03e7c74ddc50779
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri, 19 May 2023 20:37:28 -0700

simplify query

Diffstat:
Acmd/dkf/migrations/130.sql | 4++++
Mpkg/database/tableChatMessages.go | 20+++-----------------
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 }