Further improve the media attached status query for accounts (#16106)
This commit is contained in:
		| @@ -77,7 +77,7 @@ class AccountsController < ApplicationController | ||||
|   end | ||||
|  | ||||
|   def only_media_scope | ||||
|     Status.joins(:media_attachments).group(:id) | ||||
|     Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id) | ||||
|   end | ||||
|  | ||||
|   def no_replies_scope | ||||
|   | ||||
| @@ -14,7 +14,7 @@ module Admin | ||||
|       @statuses = @account.statuses.where(visibility: [:public, :unlisted]) | ||||
|  | ||||
|       if params[:media] | ||||
|         @statuses.merge!(Status.joins(:media_attachments).group(:id)) | ||||
|         @statuses.merge!(Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id)) | ||||
|       end | ||||
|  | ||||
|       @statuses = @statuses.preload(:media_attachments, :mentions).page(params[:page]).per(PER_PAGE) | ||||
|   | ||||
| @@ -42,7 +42,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController | ||||
|   end | ||||
|  | ||||
|   def only_media_scope | ||||
|     Status.joins(:media_attachments).group(:id) | ||||
|     Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id) | ||||
|   end | ||||
|  | ||||
|   def pinned_scope | ||||
|   | ||||
| @@ -0,0 +1,13 @@ | ||||
| class AddIndexOnMediaAttachmentsAccountIdStatusId < ActiveRecord::Migration[5.2] | ||||
|   disable_ddl_transaction! | ||||
|  | ||||
|   def up | ||||
|     add_index :media_attachments, [:account_id, :status_id], order: { status_id: :desc }, algorithm: :concurrently | ||||
|     remove_index :media_attachments, :account_id, algorithm: :concurrently | ||||
|   end | ||||
|  | ||||
|   def down | ||||
|     add_index :media_attachments, :account_id, algorithm: :concurrently | ||||
|     remove_index :media_attachments, [:account_id, :status_id], order: { status_id: :desc }, algorithm: :concurrently | ||||
|   end | ||||
| end | ||||
| @@ -10,7 +10,7 @@ | ||||
| # | ||||
| # It's strongly recommended that you check this file into your version control system. | ||||
|  | ||||
| ActiveRecord::Schema.define(version: 2021_04_21_121431) do | ||||
| ActiveRecord::Schema.define(version: 2021_04_25_135952) do | ||||
|  | ||||
|   # These are extensions that must be enabled in order to support this database | ||||
|   enable_extension "plpgsql" | ||||
| @@ -541,7 +541,7 @@ ActiveRecord::Schema.define(version: 2021_04_21_121431) do | ||||
|     t.integer "thumbnail_file_size" | ||||
|     t.datetime "thumbnail_updated_at" | ||||
|     t.string "thumbnail_remote_url" | ||||
|     t.index ["account_id"], name: "index_media_attachments_on_account_id" | ||||
|     t.index ["account_id", "status_id"], name: "index_media_attachments_on_account_id_and_status_id", order: { status_id: :desc } | ||||
|     t.index ["scheduled_status_id"], name: "index_media_attachments_on_scheduled_status_id" | ||||
|     t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true | ||||
|     t.index ["status_id"], name: "index_media_attachments_on_status_id" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user