mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 11:37:58 +00:00
Chore: Fix N+1 queries in dashboard side (#1254)
* Chore: Fix N+1 queries in dashboard side Fixed a couple of N+1 queries fired on the dashboard side of the app to improve performance.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
class Api::V1::Accounts::Contacts::ConversationsController < Api::V1::Accounts::BaseController
|
||||
def index
|
||||
@conversations = Current.account.conversations.includes(
|
||||
:assignee, :contact, :inbox
|
||||
:assignee, :contact, :inbox, :taggings
|
||||
).where(inbox_id: inbox_ids, contact_id: permitted_params[:contact_id])
|
||||
end
|
||||
|
||||
|
||||
@@ -63,6 +63,6 @@ class Api::V1::Accounts::ContactsController < Api::V1::Accounts::BaseController
|
||||
end
|
||||
|
||||
def fetch_contact
|
||||
@contact = Current.account.contacts.find(params[:id])
|
||||
@contact = Current.account.contacts.includes(contact_inboxes: [:inbox]).find(params[:id])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -62,7 +62,7 @@ class ConversationFinder
|
||||
|
||||
def find_all_conversations
|
||||
@conversations = current_account.conversations.includes(
|
||||
:assignee, :inbox, contact: [:avatar_attachment]
|
||||
:assignee, :inbox, :taggings, contact: [:avatar_attachment]
|
||||
).where(inbox_id: @inbox_ids)
|
||||
end
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class MessageFinder
|
||||
private
|
||||
|
||||
def conversation_messages
|
||||
@conversation.messages.includes(:attachments, user: { avatar_attachment: :blob })
|
||||
@conversation.messages.includes(:attachments, :sender)
|
||||
end
|
||||
|
||||
def messages
|
||||
|
||||
@@ -12,9 +12,9 @@ end
|
||||
|
||||
json.id conversation.display_id
|
||||
if conversation.unread_incoming_messages.count.zero?
|
||||
json.messages [conversation.messages.last.try(:push_event_data)]
|
||||
json.messages [conversation.messages.includes([{ attachments: [{ file_attachment: [:blob] }] }]).last.try(:push_event_data)]
|
||||
else
|
||||
json.messages conversation.unread_messages.includes([:user, :attachments]).map(&:push_event_data)
|
||||
json.messages conversation.unread_messages.includes([:user, { attachments: [{ file_attachment: [:blob] }] }]).map(&:push_event_data)
|
||||
end
|
||||
|
||||
json.inbox_id conversation.inbox_id
|
||||
|
||||
Reference in New Issue
Block a user