diff options
author | Stan Hu <stanhu@gmail.com> | 2017-07-07 15:03:10 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-07-07 16:31:21 -0700 |
commit | b963d45ca4bd883556be5d410feac995f9b50b81 (patch) | |
tree | 026d6033803614fb16eafefe029f41fff2f94245 | |
parent | 426271dacbb3b7462e4f7a78fa3628bbd267609a (diff) | |
download | gitlab-ce-b963d45ca4bd883556be5d410feac995f9b50b81.tar.gz |
Remove many N+1 queries with merge requests APIsh-optimize-mr-api
Identified via `ENABLE_BULLET=1 bundle exec rspec spec/requests/api/merge_requests_spec.rb:34`
Improves speed of #34159
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | lib/api/merge_requests.rb | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 6ea774470af..84eafde3a06 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -14,7 +14,7 @@ class MergeRequest < ActiveRecord::Base has_many :merge_request_diffs has_one :merge_request_diff, - -> { order('merge_request_diffs.id DESC') } + -> { order('merge_request_diffs.id DESC') }, inverse_of: :merge_request belongs_to :head_pipeline, foreign_key: "head_pipeline_id", class_name: "Ci::Pipeline" diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 1118fc7465b..d419d345ec5 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -41,7 +41,9 @@ module API args[:milestone_title] = args.delete(:milestone) args[:label_name] = args.delete(:labels) - merge_requests = MergeRequestsFinder.new(current_user, args).execute.inc_notes_with_associations + merge_requests = MergeRequestsFinder.new(current_user, args).execute + .inc_notes_with_associations + .preload(:target_project, :author, :assignee, :milestone, :merge_request_diff) merge_requests.reorder(args[:order_by] => args[:sort]) end |