Sha256: 41d58d85f382a36549289d2a7bbb65ecd7de40991f254c0de7e264ad517e05aa

Contents?: true

Size: 788 Bytes

Versions: 11

Compression:

Stored size: 788 Bytes

Contents

module Martyr
  module Runtime
    class SelectOperatorForMetric < BaseOperator

      attr_reader :metric_name
      attr_reader :what, :as, :data_rollup_sql

      def initialize(metric_name, &block)
        super(&block)
        @metric_name = metric_name
      end

      def add_select(what, as:, data_rollup_sql: nil)
        @what = what
        @as = as
        @data_rollup_sql = data_rollup_sql
      end

      private

      def handle_inner(fact_scope)
        fact_scope.decorate_scope {|scope| scope.select("#{what} AS #{as}") }
      end

      def handle_outer(wrapper)
        wrapper.add_to_select(data_rollup_sql) if data_rollup_sql.present?
      end

      def supported_for?(fact_scope)
        fact_scope.supports_metric?(metric_name)
      end

    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
martyr-0.1.85.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.84.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.82.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.81.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.80.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.79.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.78.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.77.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.76.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.75.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
martyr-0.1.74.pre lib/martyr/runtime/scope_operators/select_operator_for_metric.rb