Fix trends returning less results per page when filtered in REST API (#17996)
- Change filtering and pagination to occur in SQL instead of Redis - Change rank/score displayed on trends in admin UI to be locale-specific
This commit is contained in:
parent
6b72641641
commit
fd9a9b07c2
5 changed files with 20 additions and 31 deletions
|
@ -14,8 +14,8 @@ class Trends::Query
|
|||
@records = []
|
||||
@loaded = false
|
||||
@allowed = false
|
||||
@limit = -1
|
||||
@offset = 0
|
||||
@limit = nil
|
||||
@offset = nil
|
||||
end
|
||||
|
||||
def allowed!
|
||||
|
@ -73,7 +73,10 @@ class Trends::Query
|
|||
if tmp_ids.empty?
|
||||
klass.none
|
||||
else
|
||||
klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering')
|
||||
scope = klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering')
|
||||
scope = scope.offset(@offset) if @offset.present?
|
||||
scope = scope.limit(@limit) if @limit.present?
|
||||
scope
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -93,7 +96,7 @@ class Trends::Query
|
|||
end
|
||||
|
||||
def ids
|
||||
redis.zrevrange(key, @offset, @limit.positive? ? @limit - 1 : @limit).map(&:to_i)
|
||||
redis.zrevrange(key, 0, -1).map(&:to_i)
|
||||
end
|
||||
|
||||
def perform_queries
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue