Refactor GlobalMilestone queries.
Make methods return ActiveRecord Relations instead of Arrays.
This commit is contained in:
parent
3231ea10b7
commit
a056dfa9a0
|
@ -29,6 +29,7 @@ module Issuable
|
|||
scope :assigned, -> { where("assignee_id IS NOT NULL") }
|
||||
scope :unassigned, -> { where("assignee_id IS NULL") }
|
||||
scope :of_projects, ->(ids) { where(project_id: ids) }
|
||||
scope :of_milestones, ->(ids) { where(milestone_id: ids) }
|
||||
scope :opened, -> { with_state(:opened, :reopened) }
|
||||
scope :only_opened, -> { with_state(:opened) }
|
||||
scope :only_reopened, -> { with_state(:reopened) }
|
||||
|
|
|
@ -28,27 +28,27 @@ class GlobalMilestone
|
|||
end
|
||||
|
||||
def projects
|
||||
milestones.map { |milestone| milestone.project }
|
||||
@projects ||= Project.for_milestones(milestones.map(&:id))
|
||||
end
|
||||
|
||||
def issue_count
|
||||
milestones.map { |milestone| milestone.issues.count }.sum
|
||||
def issues_count
|
||||
issues.count
|
||||
end
|
||||
|
||||
def merge_requests_count
|
||||
milestones.map { |milestone| milestone.merge_requests.count }.sum
|
||||
merge_requests.count
|
||||
end
|
||||
|
||||
def open_items_count
|
||||
milestones.map { |milestone| milestone.open_items_count }.sum
|
||||
opened_issues.count + opened_merge_requests.count
|
||||
end
|
||||
|
||||
def closed_items_count
|
||||
milestones.map { |milestone| milestone.closed_items_count }.sum
|
||||
closed_issues.count + closed_merge_requests.count
|
||||
end
|
||||
|
||||
def total_items_count
|
||||
milestones.map { |milestone| milestone.total_items_count }.sum
|
||||
issues_count + merge_requests_count
|
||||
end
|
||||
|
||||
def percent_complete
|
||||
|
@ -76,11 +76,11 @@ class GlobalMilestone
|
|||
end
|
||||
|
||||
def issues
|
||||
@issues ||= milestones.map(&:issues).flatten.group_by(&:state)
|
||||
@issues ||= Issue.of_milestones(milestones.map(&:id))
|
||||
end
|
||||
|
||||
def merge_requests
|
||||
@merge_requests ||= milestones.map(&:merge_requests).flatten.group_by(&:state)
|
||||
@merge_requests ||= MergeRequest.of_milestones(milestones.map(&:id))
|
||||
end
|
||||
|
||||
def participants
|
||||
|
@ -88,19 +88,19 @@ class GlobalMilestone
|
|||
end
|
||||
|
||||
def opened_issues
|
||||
issues.values_at("opened", "reopened").compact.flatten
|
||||
issues.opened
|
||||
end
|
||||
|
||||
def closed_issues
|
||||
issues['closed']
|
||||
issues.closed
|
||||
end
|
||||
|
||||
def opened_merge_requests
|
||||
merge_requests.values_at("opened", "reopened").compact.flatten
|
||||
merge_requests.opened
|
||||
end
|
||||
|
||||
def closed_merge_requests
|
||||
merge_requests.values_at("closed", "merged", "locked").compact.flatten
|
||||
merge_requests.with_states(:closed, :merged, :locked)
|
||||
end
|
||||
|
||||
def complete?
|
||||
|
|
|
@ -139,7 +139,6 @@ class MergeRequest < ActiveRecord::Base
|
|||
scope :of_projects, ->(ids) { where(target_project_id: ids) }
|
||||
scope :opened, -> { with_states(:opened, :reopened) }
|
||||
scope :merged, -> { with_state(:merged) }
|
||||
scope :closed, -> { with_state(:closed) }
|
||||
scope :closed_and_merged, -> { with_states(:closed, :merged) }
|
||||
|
||||
scope :join_project, -> { joins(:target_project) }
|
||||
|
|
|
@ -215,6 +215,7 @@ class Project < ActiveRecord::Base
|
|||
scope :public_only, -> { where(visibility_level: Project::PUBLIC) }
|
||||
scope :public_and_internal_only, -> { where(visibility_level: Project.public_and_internal_levels) }
|
||||
scope :non_archived, -> { where(archived: false) }
|
||||
scope :for_milestones, ->(ids) { joins(:milestones).where('milestones.id' => ids) }
|
||||
|
||||
state_machine :import_status, initial: :none do
|
||||
event :import_start do
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
.row
|
||||
.col-sm-6
|
||||
= link_to issues_dashboard_path(milestone_title: milestone.title) do
|
||||
= pluralize milestone.issue_count, 'Issue'
|
||||
= pluralize milestone.issues_count, 'Issue'
|
||||
·
|
||||
= link_to merge_requests_dashboard_path(milestone_title: milestone.title) do
|
||||
= pluralize milestone.merge_requests_count, 'Merge Request'
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
%li.active
|
||||
= link_to '#tab-issues', 'data-toggle' => 'tab' do
|
||||
Issues
|
||||
%span.badge= @milestone.issue_count
|
||||
%span.badge= @milestone.issues_count
|
||||
%li
|
||||
= link_to '#tab-merge-requests', 'data-toggle' => 'tab' do
|
||||
Merge Requests
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
.row
|
||||
.col-sm-6
|
||||
= link_to issues_group_path(@group, milestone_title: milestone.title) do
|
||||
= pluralize milestone.issue_count, 'Issue'
|
||||
= pluralize milestone.issues_count, 'Issue'
|
||||
·
|
||||
= link_to merge_requests_group_path(@group, milestone_title: milestone.title) do
|
||||
= pluralize milestone.merge_requests_count, 'Merge Request'
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
%li.active
|
||||
= link_to '#tab-issues', 'data-toggle' => 'tab' do
|
||||
Issues
|
||||
%span.badge= @milestone.issue_count
|
||||
%span.badge= @milestone.issues_count
|
||||
%li
|
||||
= link_to '#tab-merge-requests', 'data-toggle' => 'tab' do
|
||||
Merge Requests
|
||||
|
|
Loading…
Reference in New Issue