chore: Improve n+1 queries (#4202)
Fixes the n+1 queries that get triggered while accessing agents endpoint
This commit is contained in:
parent
4a3ddad02f
commit
9f8e442333
3 changed files with 5 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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?
|
||||||
|
|
Loading…
Reference in a new issue