Class: FactMetrics::AverageConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/fact_metrics/average_config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, uses: nil, **options) ⇒ AverageConfig

Returns a new instance of AverageConfig.



4
5
6
7
8
# File 'lib/fact_metrics/average_config.rb', line 4

def initialize(name, uses: nil, **options)
  @name = name
  @uses = uses
  @options = options
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



2
3
4
# File 'lib/fact_metrics/average_config.rb', line 2

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



2
3
4
# File 'lib/fact_metrics/average_config.rb', line 2

def options
  @options
end

#usesObject (readonly)

Returns the value of attribute uses.



2
3
4
# File 'lib/fact_metrics/average_config.rb', line 2

def uses
  @uses
end

Instance Method Details

#composed_of_attributesObject



14
15
16
17
18
19
20
21
# File 'lib/fact_metrics/average_config.rb', line 14

def composed_of_attributes
  [
    composed_of_name.to_sym,
    class_name: "Metric",
    mapping: {sql_result_name => :value},
    constructor: proc { |value| FactMetrics::Metric.new(value, metric_options) }
  ]
end

#composed_of_nameObject



12
# File 'lib/fact_metrics/average_config.rb', line 12

def composed_of_name = "average_#{name}_metric"

#field_nameObject



31
32
33
# File 'lib/fact_metrics/average_config.rb', line 31

def field_name
  options[:field] || name.to_s
end

#metric_optionsObject



35
36
37
# File 'lib/fact_metrics/average_config.rb', line 35

def metric_options
  options.merge({name: composed_of_name})
end

#scope_nameObject



10
# File 'lib/fact_metrics/average_config.rb', line 10

def scope_name = "#{name}_averages"

#sqlObject



23
24
25
26
27
28
29
# File 'lib/fact_metrics/average_config.rb', line 23

def sql
  <<~SQL
    CASE WHEN count(*) != 0 THEN
      AVG(#{field_name})
    END AS #{sql_result_name}
  SQL
end

#sql_result_nameObject



11
# File 'lib/fact_metrics/average_config.rb', line 11

def sql_result_name = "average_#{name}"