summaryrefslogtreecommitdiff
path: root/lib/api/entities.rb
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-07-10 16:07:34 +0000
committerSean McGivern <sean@mcgivern.me.uk>2017-07-10 16:07:34 +0000
commit664bc371f309092de2915585af69a78efe69b27d (patch)
tree2366f479c047d901ecdca7541530ad0c75d20408 /lib/api/entities.rb
parentb347749ab886194f34eaab7f6578bfd3d4b4415b (diff)
parent42f10974baca66621a15f0b529e4257854f37684 (diff)
downloadgitlab-ce-664bc371f309092de2915585af69a78efe69b27d.tar.gz
Merge branch 'sh-optimize-mr-api-emojis-and-labels' into 'master'
Remove remaining N+1 queries in merge requests API with emojis and labels Closes #34159 See merge request !12732
Diffstat (limited to 'lib/api/entities.rb')
-rw-r--r--lib/api/entities.rb20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index f4796f311a5..945f2821d72 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -316,10 +316,26 @@ module API
class MergeRequestBasic < ProjectEntity
expose :target_branch, :source_branch
- expose :upvotes, :downvotes
+ expose :upvotes do |merge_request, options|
+ if options[:issuable_metadata]
+ options[:issuable_metadata][merge_request.id].upvotes
+ else
+ merge_request.upvotes
+ end
+ end
+ expose :downvotes do |merge_request, options|
+ if options[:issuable_metadata]
+ options[:issuable_metadata][merge_request.id].downvotes
+ else
+ merge_request.downvotes
+ end
+ end
expose :author, :assignee, using: Entities::UserBasic
expose :source_project_id, :target_project_id
- expose :label_names, as: :labels
+ expose :labels do |merge_request, options|
+ # Avoids an N+1 query since labels are preloaded
+ merge_request.labels.map(&:title).sort
+ end
expose :work_in_progress?, as: :work_in_progress
expose :milestone, using: Entities::Milestone
expose :merge_when_pipeline_succeeds