diff options
author | Stan Hu <stanhu@gmail.com> | 2017-07-07 23:21:09 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-07-08 22:19:34 -0700 |
commit | 88c4248ac72ab1e520edddfa184000d59c509e8f (patch) | |
tree | 2263d6046632bc0162e7b7c352fff429cf4ce9c9 /lib/api/entities.rb | |
parent | 420f6b5474e49e17226415250846e48fe514fe0d (diff) | |
download | gitlab-ce-88c4248ac72ab1e520edddfa184000d59c509e8f.tar.gz |
Remove remaining N+1 queries in merge requests API with emojis and labels
Closes #34159
Diffstat (limited to 'lib/api/entities.rb')
-rw-r--r-- | lib/api/entities.rb | 20 |
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 |