Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/analytics/cycle_analytics/base_query_builder.rb')
-rw-r--r--lib/gitlab/analytics/cycle_analytics/base_query_builder.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/gitlab/analytics/cycle_analytics/base_query_builder.rb b/lib/gitlab/analytics/cycle_analytics/base_query_builder.rb
index 4dec71b35e8..c7987d63153 100644
--- a/lib/gitlab/analytics/cycle_analytics/base_query_builder.rb
+++ b/lib/gitlab/analytics/cycle_analytics/base_query_builder.rb
@@ -5,6 +5,7 @@ module Gitlab
module CycleAnalytics
class BaseQueryBuilder
include Gitlab::CycleAnalytics::MetricsTables
+ include StageQueryHelpers
delegate :subject_class, to: :stage
@@ -13,17 +14,19 @@ module Gitlab
Issue.to_s => IssuesFinder
}.freeze
+ DEFAULT_END_EVENT_FILTER = :finished
+
def initialize(stage:, params: {})
@stage = stage
@params = build_finder_params(params)
+ @params[:state] = :opened if in_progress?
end
# rubocop: disable CodeReuse/ActiveRecord
def build
query = finder.execute
query = stage.start_event.apply_query_customization(query)
- query = stage.end_event.apply_query_customization(query)
- query.where(duration_condition)
+ apply_end_event_query_customization(query)
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -46,6 +49,7 @@ module Gitlab
def build_finder_params(params)
{}.tap do |finder_params|
finder_params[:current_user] = params[:current_user]
+ finder_params[:end_event_filter] = params[:end_event_filter] || DEFAULT_END_EVENT_FILTER
add_parent_model_params!(finder_params)
add_time_range_params!(finder_params, params[:from], params[:to])
@@ -62,9 +66,20 @@ module Gitlab
finder_params[:created_after] = from || 30.days.ago
finder_params[:created_before] = to if to
end
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def apply_end_event_query_customization(query)
+ if in_progress?
+ stage.end_event.apply_negated_query_customization(query)
+ else
+ query = stage.end_event.apply_query_customization(query)
+ query.where(duration_condition)
+ end
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
end
end
end
end
-Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder.prepend_if_ee('EE::Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder')
+Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder.prepend_mod_with('Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder')