From 34b7f1730251a29cf6ef6dee9d69e13af18acb66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C5=82gorzata=20Ksionek?= Date: Thu, 4 Jul 2019 13:18:33 +0200 Subject: [PATCH] Move cycle analytics model to separate namespace --- app/models/cycle_analytics.rb | 46 --------------------- app/models/cycle_analytics/base.rb | 33 +++++++++++++++ app/models/cycle_analytics/project_level.rb | 20 +++++++++ 3 files changed, 53 insertions(+), 46 deletions(-) delete mode 100644 app/models/cycle_analytics.rb create mode 100644 app/models/cycle_analytics/base.rb create mode 100644 app/models/cycle_analytics/project_level.rb 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