summaryrefslogtreecommitdiff
path: root/app/finders
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-01-07 12:10:47 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-01-07 12:10:47 +0000
commitbf57aa76628654e15c2035e21fb29ab39fdea131 (patch)
treefeb486f23361470e6b3360472b96afc7525d184e /app/finders
parentd480c97736a444636eeb05266041a6e51649685d (diff)
downloadgitlab-ce-bf57aa76628654e15c2035e21fb29ab39fdea131.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/user_recent_events_finder.rb8
1 files changed, 6 insertions, 2 deletions
diff --git a/app/finders/user_recent_events_finder.rb b/app/finders/user_recent_events_finder.rb
index 2473163290f..96120d9412f 100644
--- a/app/finders/user_recent_events_finder.rb
+++ b/app/finders/user_recent_events_finder.rb
@@ -49,9 +49,13 @@ class UserRecentEventsFinder
# rubocop: disable CodeReuse/ActiveRecord
def execute_optimized_multi(users)
Gitlab::Pagination::Keyset::InOperatorOptimization::QueryBuilder.new(
- scope: Event.reorder(:id),
+ scope: Event.reorder(id: :desc),
array_scope: User.select(:id).where(id: users),
- array_mapping_scope: -> (author_id_expression) { Event.where(Event.arel_table[:author_id].eq(author_id_expression)) },
+ # Event model has a default scope { reorder(nil) }
+ # When a relation is rordered and used as a target when merging scope,
+ # its order takes a precedence and _overwrites_ the original scope's order.
+ # Thus we have to explicitly provide `reorder` for array_mapping_scope here.
+ array_mapping_scope: -> (author_id_expression) { Event.where(Event.arel_table[:author_id].eq(author_id_expression)).reorder(id: :desc) },
finder_query: -> (id_expression) { Event.where(Event.arel_table[:id].eq(id_expression)) }
)
.execute