From d3afe64bb13ed90d8cbe2ba8456892f552aed840 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 4 May 2023 13:17:55 +0530 Subject: [PATCH] feat: preload messages_count --- app/services/conversations/filter_service.rb | 6 ++++++ .../v1/conversations/partials/_conversation.json.jbuilder | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/conversations/filter_service.rb b/app/services/conversations/filter_service.rb index d91916b12..d52ff7262 100644 --- a/app/services/conversations/filter_service.rb +++ b/app/services/conversations/filter_service.rb @@ -60,6 +60,12 @@ class Conversations::FilterService < FilterService @conversations = @conversations.includes( :taggings, :inbox, { assignee: { avatar_attachment: [:blob] } }, { contact: { avatar_attachment: [:blob] } }, :team ) + + @conversations = @conversations + .left_joins(:messages) + .select('conversations.*, COUNT(DISTINCT messages.id) AS message_count') + .group('conversations.id') + @conversations.latest.page(current_page) end end diff --git a/app/views/api/v1/conversations/partials/_conversation.json.jbuilder b/app/views/api/v1/conversations/partials/_conversation.json.jbuilder index 28de0df0a..0e13acff4 100644 --- a/app/views/api/v1/conversations/partials/_conversation.json.jbuilder +++ b/app/views/api/v1/conversations/partials/_conversation.json.jbuilder @@ -17,7 +17,7 @@ json.meta do end json.id conversation.display_id -if conversation.messages.count.zero? +if conversation.message_count.zero? json.messages [] elsif conversation.unread_incoming_messages.count.zero? json.messages [conversation.messages.includes([{ attachments: [{ file_attachment: [:blob] }] }]).last.try(:push_event_data)]