diff options
author | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-07-04 13:18:33 +0200 |
---|---|---|
committer | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-07-09 12:16:37 +0200 |
commit | 34b7f1730251a29cf6ef6dee9d69e13af18acb66 (patch) | |
tree | b2ff6fa9bda3738d70b86b9b85f5f3a946549aeb | |
parent | 7301cd142222dfed85fbcc9ec3fc6c20f33f70a9 (diff) | |
download | gitlab-ce-34b7f1730251a29cf6ef6dee9d69e13af18acb66.tar.gz |
Move cycle analytics model to separate namespace
-rw-r--r-- | app/models/cycle_analytics.rb | 46 | ||||
-rw-r--r-- | app/models/cycle_analytics/base.rb | 33 | ||||
-rw-r--r-- | app/models/cycle_analytics/project_level.rb | 20 |
3 files changed, 53 insertions, 46 deletions
diff --git a/app/models/cycle_analytics.rb b/app/models/cycle_analytics.rb deleted file mode 100644 index d0f5b6970b1..00000000000 --- a/app/models/cycle_analytics.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -class CycleAnalytics - STAGES = %i[issue plan code test review staging production].freeze - - def initialize(project, options) - @project = project - @options = options - end - - def all_medians_per_stage - STAGES.each_with_object({}) do |stage_name, medians_per_stage| - medians_per_stage[stage_name] = self[stage_name].median - end - end - - def summary - @summary ||= ::Gitlab::CycleAnalytics::StageSummary.new(@project, - from: @options[:from], - current_user: @options[:current_user]).data - end - - def stats - @stats ||= stats_per_stage - end - - def no_stats? - stats.all? { |hash| hash[:value].nil? } - end - - def permissions(user:) - Gitlab::CycleAnalytics::Permissions.get(user: user, project: @project) - end - - def [](stage_name) - Gitlab::CycleAnalytics::Stage[stage_name].new(project: @project, options: @options) - end - - private - - def stats_per_stage - STAGES.map do |stage_name| - self[stage_name].as_json - end - end -end diff --git a/app/models/cycle_analytics/base.rb b/app/models/cycle_analytics/base.rb new file mode 100644 index 00000000000..240be10c1f9 --- /dev/null +++ b/app/models/cycle_analytics/base.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module CycleAnalytics + class Base + STAGES = %i[issue plan code test review staging production].freeze + + def all_medians_per_stage + STAGES.each_with_object({}) do |stage_name, medians_per_stage| + medians_per_stage[stage_name] = self[stage_name].median + end + end + + def stats + @stats ||= stats_per_stage + end + + def no_stats? + stats.all? { |hash| hash[:value].nil? } + end + + def [](stage_name) + Gitlab::CycleAnalytics::Stage[stage_name].new(project: @project, options: @options) + end + + private + + def stats_per_stage + STAGES.map do |stage_name| + self[stage_name].as_json + end + end + end +end diff --git a/app/models/cycle_analytics/project_level.rb b/app/models/cycle_analytics/project_level.rb new file mode 100644 index 00000000000..93c4b64ba3e --- /dev/null +++ b/app/models/cycle_analytics/project_level.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module CycleAnalytics + class ProjectLevel < Base + def initialize(project:, options:) + @project = project + @options = options + end + + def summary + @summary ||= ::Gitlab::CycleAnalytics::StageSummary.new(@project, + from: @options[:from], + current_user: @options[:current_user]).data + end + + def permissions(user:) + Gitlab::CycleAnalytics::Permissions.get(user: user, project: @project) + end + end +end |