Skip to content

Commit

Permalink
Further improve the media attached status query for accounts (mastodo…
Browse files Browse the repository at this point in the history
  • Loading branch information
abcang authored and chrisguida committed Feb 26, 2022
1 parent 657594a commit 8aa2183
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 5 deletions.
2 changes: 1 addition & 1 deletion app/controllers/accounts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def default_statuses
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
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/admin/statuses_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def index
@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)
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/v1/accounts/statuses_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def permitted_account_statuses
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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -541,7 +541,7 @@
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"
Expand Down

0 comments on commit 8aa2183

Please sign in to comment.