From b11492c2e36803cf19b175e7d850a72f4e5f9b1f Mon Sep 17 00:00:00 2001 From: Adam Niedzielski Date: Tue, 10 Jan 2017 13:30:28 -0500 Subject: Use cached values to compute total issues count in milestone index pages Milestoneish#issues_visible_to_user caches only the ActiveRecord relation, not the actual result. Introduce Milestoneish#total_issues_count that relies on the cached method Milestoneish#count_issues_by_state to reduce the number of queries. --- app/models/concerns/milestoneish.rb | 7 +++++-- app/views/shared/milestones/_milestone.html.haml | 2 +- changelogs/unreleased/reduce-queries-milestone-index.yml | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 changelogs/unreleased/reduce-queries-milestone-index.yml diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb index fcc8feddb39..e9450dd0c26 100644 --- a/app/models/concerns/milestoneish.rb +++ b/app/models/concerns/milestoneish.rb @@ -7,11 +7,14 @@ module Milestoneish def total_items_count(user) memoize_per_user(user, :total_items_count) do - issues_count = count_issues_by_state(user).values.sum - issues_count + merge_requests.size + total_issues_count(user) + merge_requests.size end end + def total_issues_count(user) + count_issues_by_state(user).values.sum + end + def complete?(user) total_items_count(user) > 0 && total_items_count(user) == closed_items_count(user) end diff --git a/app/views/shared/milestones/_milestone.html.haml b/app/views/shared/milestones/_milestone.html.haml index 3200aacf542..9e6a76e1ddb 100644 --- a/app/views/shared/milestones/_milestone.html.haml +++ b/app/views/shared/milestones/_milestone.html.haml @@ -9,7 +9,7 @@ .pull-right.light #{milestone.percent_complete(current_user)}% complete .row .col-sm-6 - = link_to pluralize(milestone.issues_visible_to_user(current_user).size, 'Issue'), issues_path + = link_to pluralize(milestone.total_issues_count(current_user), 'Issue'), issues_path · = link_to pluralize(milestone.merge_requests.size, 'Merge Request'), merge_requests_path .col-sm-6= milestone_progress_bar(milestone) diff --git a/changelogs/unreleased/reduce-queries-milestone-index.yml b/changelogs/unreleased/reduce-queries-milestone-index.yml new file mode 100644 index 00000000000..a779b58c973 --- /dev/null +++ b/changelogs/unreleased/reduce-queries-milestone-index.yml @@ -0,0 +1,4 @@ +--- +title: Use cached values to compute total issues count in milestone index pages +merge_request: 8518 +author: -- cgit v1.2.1