Ver a proveniência

Use Rails' index_by where it makes sense (#15542)

* Use Rails' index_by where it makes sense

* Fix tests

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
pull/15558/head
ThibG há 3 meses
committed by GitHub
ascendente
cometimento
54d4e5252b
Não foi encontrada uma chave conhecida para esta assinatura, na base de dados ID da chave GPG: 4AEE18F83AFDEB23
12 ficheiros alterados com 12 adições e 12 eliminações
  1. +1
    -1
      app/controllers/api/v1/markers_controller.rb
  2. +1
    -1
      app/controllers/concerns/cache_concern.rb
  3. +1
    -1
      app/lib/entity_cache.rb
  4. +1
    -1
      app/lib/settings/scoped_settings.rb
  5. +1
    -1
      app/lib/webfinger.rb
  6. +1
    -1
      app/models/account.rb
  7. +1
    -1
      app/models/notification.rb
  8. +1
    -1
      app/models/setting.rb
  9. +1
    -1
      app/models/status.rb
  10. +1
    -1
      app/models/trending_tags.rb
  11. +1
    -1
      lib/mastodon/media_cli.rb
  12. +1
    -1
      spec/models/notification_spec.rb

+ 1
- 1
app/controllers/api/v1/markers_controller.rb Ver ficheiro

@@ -7,7 +7,7 @@ class Api::V1::MarkersController < Api::BaseController
before_action :require_user!

def index
@markers = current_user.markers.where(timeline: Array(params[:timeline])).each_with_object({}) { |marker, h| h[marker.timeline] = marker }
@markers = current_user.markers.where(timeline: Array(params[:timeline])).index_by(&:timeline)
render json: serialize_map(@markers)
end



+ 1
- 1
app/controllers/concerns/cache_concern.rb Ver ficheiro

@@ -38,7 +38,7 @@ module CacheConcern
klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!)

unless uncached_ids.empty?
uncached = klass.where(id: uncached_ids).with_includes.each_with_object({}) { |item, h| h[item.id] = item }
uncached = klass.where(id: uncached_ids).with_includes.index_by(&:id)

uncached.each_value do |item|
Rails.cache.write(item, item)


+ 1
- 1
app/lib/entity_cache.rb Ver ficheiro

@@ -25,7 +25,7 @@ class EntityCache
end

unless uncached_ids.empty?
uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).each_with_object({}) { |item, h| h[item.shortcode] = item }
uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).index_by(&:shortcode)
uncached.each_value { |item| Rails.cache.write(to_key(:emoji, item.shortcode, domain), item, expires_in: MAX_EXPIRATION) }
end



+ 1
- 1
app/lib/settings/scoped_settings.rb Ver ficheiro

@@ -30,7 +30,7 @@ module Settings

def all_as_records
vars = thing_scoped
records = vars.each_with_object({}) { |r, h| h[r.var] = r }
records = vars.index_by(&:var)

Setting.default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)


+ 1
- 1
app/lib/webfinger.rb Ver ficheiro

@@ -21,7 +21,7 @@ class Webfinger
private

def links
@links ||= @json['links'].map { |link| [link['rel'], link] }.to_h
@links ||= @json['links'].index_by { |link| link['rel'] }
end
end



+ 1
- 1
app/models/account.rb Ver ficheiro

@@ -273,7 +273,7 @@ class Account < ApplicationRecord
end

def tags_as_strings=(tag_names)
hashtags_map = Tag.find_or_create_by_names(tag_names).each_with_object({}) { |tag, h| h[tag.name] = tag }
hashtags_map = Tag.find_or_create_by_names(tag_names).index_by(&:name)

# Remove hashtags that are to be deleted
tags.each do |tag|


+ 1
- 1
app/models/notification.rb Ver ficheiro

@@ -96,7 +96,7 @@ class Notification < ApplicationRecord

return if account_ids.empty?

accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
accounts = Account.where(id: account_ids).includes(:account_stat).index_by(&:id)

cached_items.each do |item|
item.from_account = accounts[item.from_account_id]


+ 1
- 1
app/models/setting.rb Ver ficheiro

@@ -40,7 +40,7 @@ class Setting < RailsSettings::Base

def all_as_records
vars = thing_scoped
records = vars.each_with_object({}) { |r, h| h[r.var] = r }
records = vars.index_by(&:var)

default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)


+ 1
- 1
app/models/status.rb Ver ficheiro

@@ -301,7 +301,7 @@ class Status < ApplicationRecord

return if account_ids.empty?

accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
accounts = Account.where(id: account_ids).includes(:account_stat).index_by(&:id)

cached_items.each do |item|
item.account = accounts[item.account_id]


+ 1
- 1
app/models/trending_tags.rb Ver ficheiro

@@ -91,7 +91,7 @@ class TrendingTags

tags = Tag.where(id: tag_ids)
tags = tags.trendable if filtered
tags = tags.each_with_object({}) { |tag, h| h[tag.id] = tag }
tags = tags.index_by(&:id)

tag_ids.map { |tag_id| tags[tag_id] }.compact.take(limit)
end


+ 1
- 1
lib/mastodon/media_cli.rb Ver ficheiro

@@ -326,7 +326,7 @@ module Mastodon
end

preload_map.each_with_object({}) do |(model_name, record_ids), model_map|
model_map[model_name] = model_name.constantize.where(id: record_ids).each_with_object({}) { |record, record_map| record_map[record.id] = record }
model_map[model_name] = model_name.constantize.where(id: record_ids).index_by(&:id)
end
end
end


+ 1
- 1
spec/models/notification_spec.rb Ver ficheiro

@@ -71,7 +71,7 @@ RSpec.describe Notification, type: :model do
before do
allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1)
allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2)
allow(Account).to receive_message_chain(:where, :includes, :each_with_object).and_return(accounts_with_ids)
allow(Account).to receive_message_chain(:where, :includes, :index_by).and_return(accounts_with_ids)
end

let(:cached_items) do


Carregando…
Cancelar
Guardar