Eager loading fixes for api/ controllers (#28848)
				
					
				
			This commit is contained in:
		@@ -30,7 +30,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def default_accounts
 | 
			
		||||
    Account.includes(:active_relationships, :account_stat).references(:active_relationships)
 | 
			
		||||
    Account.includes(:active_relationships, :account_stat, :user).references(:active_relationships)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_follows
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def default_accounts
 | 
			
		||||
    Account.includes(:passive_relationships, :account_stat).references(:passive_relationships)
 | 
			
		||||
    Account.includes(:passive_relationships, :account_stat, :user).references(:passive_relationships)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_follows
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ class Api::V1::BlocksController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_blocks
 | 
			
		||||
    @paginated_blocks ||= Block.eager_load(target_account: :account_stat)
 | 
			
		||||
    @paginated_blocks ||= Block.eager_load(target_account: [:account_stat, :user])
 | 
			
		||||
                               .joins(:target_account)
 | 
			
		||||
                               .merge(Account.without_suspended)
 | 
			
		||||
                               .where(account: current_account)
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ class Api::V1::DirectoriesController < Api::BaseController
 | 
			
		||||
      scope.merge!(local_account_scope) if local_accounts?
 | 
			
		||||
      scope.merge!(account_exclusion_scope) if current_account
 | 
			
		||||
      scope.merge!(account_domain_block_scope) if current_account && !local_accounts?
 | 
			
		||||
    end
 | 
			
		||||
    end.includes(:account_stat, user: :role)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def local_accounts?
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ class Api::V1::EndorsementsController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def endorsed_accounts
 | 
			
		||||
    current_account.endorsed_accounts.includes(:account_stat).without_suspended
 | 
			
		||||
    current_account.endorsed_accounts.includes(:account_stat, :user).without_suspended
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def insert_pagination_headers
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ class Api::V1::FollowRequestsController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def default_accounts
 | 
			
		||||
    Account.without_suspended.includes(:follow_requests, :account_stat).references(:follow_requests)
 | 
			
		||||
    Account.without_suspended.includes(:follow_requests, :account_stat, :user).references(:follow_requests)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_follow_requests
 | 
			
		||||
 
 | 
			
		||||
@@ -37,9 +37,9 @@ class Api::V1::Lists::AccountsController < Api::BaseController
 | 
			
		||||
 | 
			
		||||
  def load_accounts
 | 
			
		||||
    if unlimited?
 | 
			
		||||
      @list.accounts.without_suspended.includes(:account_stat).all
 | 
			
		||||
      @list.accounts.without_suspended.includes(:account_stat, :user).all
 | 
			
		||||
    else
 | 
			
		||||
      @list.accounts.without_suspended.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id])
 | 
			
		||||
      @list.accounts.without_suspended.includes(:account_stat, :user).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ class Api::V1::MutesController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_mutes
 | 
			
		||||
    @paginated_mutes ||= Mute.eager_load(:target_account)
 | 
			
		||||
    @paginated_mutes ||= Mute.eager_load(target_account: [:account_stat, :user])
 | 
			
		||||
                             .joins(:target_account)
 | 
			
		||||
                             .merge(Account.without_suspended)
 | 
			
		||||
                             .where(account: current_account)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::Bas
 | 
			
		||||
  def default_accounts
 | 
			
		||||
    Account
 | 
			
		||||
      .without_suspended
 | 
			
		||||
      .includes(:favourites, :account_stat)
 | 
			
		||||
      .includes(:favourites, :account_stat, :user)
 | 
			
		||||
      .references(:favourites)
 | 
			
		||||
      .where(favourites: { status_id: @status.id })
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::Base
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def default_accounts
 | 
			
		||||
    Account.without_suspended.includes(:statuses, :account_stat).references(:statuses)
 | 
			
		||||
    Account.without_suspended.includes(:statuses, :account_stat, :user).references(:statuses)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def paginated_statuses
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ class Api::V2::FiltersController < Api::BaseController
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def set_filters
 | 
			
		||||
    @filters = current_account.custom_filters.includes(:keywords)
 | 
			
		||||
    @filters = current_account.custom_filters.includes(:keywords, :statuses)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_filter
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ class AccountSuggestions
 | 
			
		||||
      # a complicated query on this end.
 | 
			
		||||
 | 
			
		||||
      account_ids  = account_ids_with_sources[offset, limit]
 | 
			
		||||
      accounts_map = Account.where(id: account_ids.map(&:first)).includes(:account_stat).index_by(&:id)
 | 
			
		||||
      accounts_map = Account.where(id: account_ids.map(&:first)).includes(:account_stat, :user).index_by(&:id)
 | 
			
		||||
 | 
			
		||||
      account_ids.filter_map do |(account_id, source)|
 | 
			
		||||
        next unless accounts_map.key?(account_id)
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ class Report < ApplicationRecord
 | 
			
		||||
 | 
			
		||||
  scope :unresolved, -> { where(action_taken_at: nil) }
 | 
			
		||||
  scope :resolved,   -> { where.not(action_taken_at: nil) }
 | 
			
		||||
  scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) }
 | 
			
		||||
  scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with([:account_stat, { user: [:invite_request, :invite, :ips] }])) }
 | 
			
		||||
 | 
			
		||||
  # A report is considered local if the reporter is local
 | 
			
		||||
  delegate :local?, to: :account
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user