diff options
author | Stan Hu <stanhu@gmail.com> | 2017-07-08 09:22:09 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-07-08 09:22:09 +0300 |
commit | 43b9141c365930326d50c8c8566d67722172d2ec (patch) | |
tree | 6eeaa5c2bfd75800840bf40c59d18522a631020b | |
parent | 42481d1b437f9502dc776b1ba7cb1276d5e4e984 (diff) | |
parent | b963d45ca4bd883556be5d410feac995f9b50b81 (diff) |
Merge branch 'sh-optimize-mr-api' into 'master'
Remove many N+1 queries with merge requests API
See merge request !12726
-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 30caa3598d1..815c5b43406 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -15,7 +15,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 |