gitlab-org--gitlab-foss/lib/gitlab/metrics/dashboard/processor.rb

33 lines
956 B
Ruby

# frozen_string_literal: true
module Gitlab
module Metrics
module Dashboard
# Responsible for processesing a dashboard hash, inserting
# relevant DB 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(project, dashboard, sequence, params)
@project = project
@dashboard = dashboard
@sequence = sequence
@params = params
end
# Returns a new dashboard hash with the results of
# running transforms on the dashboard.
# @return [Hash, nil]
def process
return unless @dashboard
@dashboard.deep_symbolize_keys.tap do |dashboard|
@sequence.each do |stage|
stage.new(@project, dashboard, @params).transform!
end
end
end
end
end
end
end