diff options
Diffstat (limited to 'lib/gitlab/metrics_dashboard/processor.rb')
-rw-r--r-- | lib/gitlab/metrics_dashboard/processor.rb | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/gitlab/metrics_dashboard/processor.rb b/lib/gitlab/metrics_dashboard/processor.rb index 3b8ab27a07b..ef9d75947f0 100644 --- a/lib/gitlab/metrics_dashboard/processor.rb +++ b/lib/gitlab/metrics_dashboard/processor.rb @@ -2,26 +2,33 @@ module Gitlab module MetricsDashboard + # Responsible for processesing a dashboard hash, inserting + # relevantDB records & sorting for proper rendering in + # the UI. These includes shared metric info, custom metrics + # info, and alerts (only in EE). class Processor - def initialize(dashboard, project, environment) - @dashboard = dashboard.deep_transform_keys(&:to_sym) + def initialize(project, environment) @project = project @environment = environment end - def stages - @stages ||= [ + def sequence + [ Stages::CommonMetricsInserter, Stages::ProjectMetricsInserter, Stages::Sorter - ].freeze + ] end - def process - stage_params = [@dashboard, @project, @environment] - stages.each { |stage| stage.new(*stage_params).transform! } + # Returns a new dashboard hash with the results of + # running transforms on the dashboard. + def process(dashboard) + dashboard = dashboard.deep_transform_keys(&:to_sym) - @dashboard + stage_params = [@project, @environment] + sequence.each { |stage| stage.new(*stage_params).transform!(dashboard) } + + dashboard end end end |