Skip to content
Extraits de code Groupes Projets
Valider f85dbe83 rédigé par Akihiko Odaki (@fn_aki@pawoo.net)'s avatar Akihiko Odaki (@fn_aki@pawoo.net) Validation de Eugen Rochko
Parcourir les fichiers

Remove sort in Feed (#4050)

In from_redis method, statuses retrieved from the database was mapped to
the IDs retrieved from Redis. It was equivalent to order from high to low
because those IDs are sorted in the same order.
Statuses are ordered with the ID by default, so we do not have to reorder.
Sorting statuses in the database is even faster since the IDs are indexed
with B-tree.
parent a9c326b2
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -20,8 +20,7 @@ class Feed
max_id = '+inf' if max_id.blank?
since_id = '-inf' if since_id.blank?
unhydrated = redis.zrevrangebyscore(key, "(#{max_id}", "(#{since_id}", limit: [0, limit], with_scores: true).map(&:last).map(&:to_i)
status_map = Status.where(id: unhydrated).cache_ids.map { |s| [s.id, s] }.to_h
unhydrated.map { |id| status_map[id] }.compact
Status.where(id: unhydrated).cache_ids
end
def from_database(limit, max_id, since_id)
......
......@@ -2,7 +2,7 @@ require 'rails_helper'
RSpec.describe Feed, type: :model do
describe '#get' do
it 'gets statuses with ids in the range, maintining the order from Redis' do
it 'gets statuses with ids in the range' do
account = Fabricate(:account)
Fabricate(:status, account: account, id: 1)
Fabricate(:status, account: account, id: 2)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter