summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorblackst0ne <blackst0ne.ru@gmail.com>2017-02-17 07:03:42 +1100
committerblackst0ne <blackst0ne.ru@gmail.com>2017-02-17 07:03:42 +1100
commit905fdfba927dcfa32b99d649521a52445bc6838f (patch)
tree2c71c618cf675dfc92147d592866b1742f5adf79 /app/models
parentf02210ca068050f032354b48304cd73d968fb4d8 (diff)
downloadgitlab-ce-905fdfba927dcfa32b99d649521a52445bc6838f.tar.gz
Add merge request count to each issue on issues list
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/issuable.rb4
-rw-r--r--app/models/merge_requests_closing_issues.rb8
2 files changed, 10 insertions, 2 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 5f53c48fc88..c9c6bd24d75 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -16,9 +16,9 @@ module Issuable
include TimeTrackable
# This object is used to gather issuable meta data for displaying
- # upvotes, downvotes and notes count for issues and merge requests
+ # upvotes, downvotes, notes and closing merge requests count for issues and merge requests
# lists avoiding n+1 queries and improving performance.
- IssuableMeta = Struct.new(:upvotes, :downvotes, :notes_count)
+ IssuableMeta = Struct.new(:upvotes, :downvotes, :notes_count, :merge_requests_count)
included do
cache_markdown_field :title, pipeline: :single_line
diff --git a/app/models/merge_requests_closing_issues.rb b/app/models/merge_requests_closing_issues.rb
index ab597c37947..1ecdfd1dfdb 100644
--- a/app/models/merge_requests_closing_issues.rb
+++ b/app/models/merge_requests_closing_issues.rb
@@ -4,4 +4,12 @@ class MergeRequestsClosingIssues < ActiveRecord::Base
validates :merge_request_id, uniqueness: { scope: :issue_id }, presence: true
validates :issue_id, presence: true
+
+ class << self
+ def count_for_collection(ids)
+ select('issue_id', 'COUNT(*) as count').
+ group(:issue_id).
+ where(issue_id: ids)
+ end
+ end
end