class ArtirixDataModels::AggregationBuilder
Attributes
aggregation_class[R]
aggregations_factory[R]
definition[R]
metric_aggregation_class[R]
value_class[R]
Public Class Methods
new(aggregations_factory:, definition:, aggregation_class: Aggregation, metric_aggregation_class: MetricAggregation, value_class: Aggregation::Value)
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 6 def initialize(aggregations_factory:, definition:, aggregation_class: Aggregation, metric_aggregation_class: MetricAggregation, value_class: Aggregation::Value) @aggregations_factory = aggregations_factory @definition = definition @aggregation_class = aggregation_class @metric_aggregation_class = metric_aggregation_class || aggregation_class @value_class = value_class end
Public Instance Methods
build()
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 14 def build if is_metric? metric_aggregation_class.new agg_name, value else aggregation_class.new agg_name, buckets end end
Also aliased as: call
Private Instance Methods
agg_name()
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 55 def agg_name definition[:name].to_sym end
buckets()
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 33 def buckets definition[:buckets].map do |bucket| build_bucket(bucket) end end
build_bucket(bucket)
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 39 def build_bucket(bucket) name = bucket[:name] count = bucket[:count] nested_aggs = nested_aggs_from(bucket) value_class.new agg_name, name, count, nested_aggs end
is_metric?()
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 25 def is_metric? definition.key?(:value) && !definition.key?(:buckets) end
nested_aggs_from(bucket)
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 47 def nested_aggs_from(bucket) raw_nested_aggs = bucket.fetch(:aggregations) { [] } raw_nested_aggs.map do |nested_agg| aggregations_factory.build_from_json nested_agg, value_class end end
value()
click to toggle source
# File lib/artirix_data_models/aggregation_builder.rb, line 29 def value definition[:value] end