1# frozen_string_literal: true
2
3module Gitlab
4  class UsageDataMetrics
5    class << self
6      # Build the Usage Ping JSON payload from metrics YAML definitions which have instrumentation class set
7      def uncached_data
8        build_payload(:with_value)
9      end
10
11      def suggested_names
12        build_payload(:with_suggested_name)
13      end
14
15      private
16
17      def build_payload(method_symbol)
18        ::Gitlab::Usage::Metric.all.map(&method_symbol).reduce({}, :deep_merge)
19      end
20    end
21  end
22end
23