chore: Improve n+1 queries (#4202)

Fixes the n+1 queries that get triggered while accessing agents endpoint
This commit is contained in:
Sojan Jose 2022-03-17 15:57:32 +05:30 committed by GitHub
parent 4a3ddad02f
commit 9f8e442333
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 3 deletions

View file

@ -68,7 +68,7 @@ class Api::V1::Accounts::AgentsController < Api::V1::Accounts::BaseController
end end
def agents def agents
@agents ||= Current.account.users.order_by_full_name.includes({ avatar_attachment: [:blob] }) @agents ||= Current.account.users.order_by_full_name.includes(:account_users, { avatar_attachment: [:blob] })
end end
def validate_limit def validate_limit

View file

@ -108,7 +108,9 @@ class User < ApplicationRecord
end end
def current_account_user def current_account_user
account_users.find_by(account_id: Current.account.id) if Current.account # We want to avoid subsequent queries in case where the association is preloaded.
# using where here will trigger n+1 queries.
account_users.find { |ac_usr| ac_usr.account_id == Current.account.id } if Current.account
end end
def available_name def available_name

View file

@ -1,6 +1,6 @@
json.id resource.id json.id resource.id
# could be nil for a deleted agent hence the safe operator before account id # could be nil for a deleted agent hence the safe operator before account id
json.account_id resource.account&.id json.account_id Current.account&.id
json.availability_status resource.availability_status json.availability_status resource.availability_status
json.auto_offline resource.auto_offline json.auto_offline resource.auto_offline
json.confirmed resource.confirmed? json.confirmed resource.confirmed?