class ArtirixDataModels::RawAggregationDataNormaliser
Constants
- FIND_BUCKETS
- FIND_COUNTS
- FIND_VALUE
- IS_NESTED_COUNTS
Attributes
aggregations_factory[R]
list[R]
raw_aggs[R]
Public Class Methods
new(aggregations_factory, raw_aggs)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 17 def initialize(aggregations_factory, raw_aggs) @aggregations_factory = aggregations_factory @raw_aggs = raw_aggs @list = [] end
Public Instance Methods
normalise()
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 23 def normalise return [] unless raw_aggs.present? return raw_aggs if Array === raw_aggs normalise_hash(raw_aggs) list end
Also aliased as: call
Private Instance Methods
add_normalised_buckets_element_to_list(name, value)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 88 def add_normalised_buckets_element_to_list(name, value) buckets = value[:buckets].map do |raw_bucket| normalise_bucket(raw_bucket) end list << { name: name, buckets: buckets } end
add_normalised_nested_counts_to_list(name, nested)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 100 def add_normalised_nested_counts_to_list(name, nested) buckets = nested.map do |bucket_name, nested_value| { name: bucket_name.to_s, count: nested_value[:doc_count] } end list << { name: name, buckets: buckets } end
add_normalised_value_element_to_list(name, value)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 96 def add_normalised_value_element_to_list(name, value) list << { name: name, value: value[:value] } end
basic_bucket(raw_bucket)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 116 def basic_bucket(raw_bucket) name = raw_bucket[:key_as_string] || raw_bucket[:key] || raw_bucket[:name] count = raw_bucket[:doc_count] || raw_bucket[:count] { name: name, count: count } end
deep_locate(object, callable)
click to toggle source
aux
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 123 def deep_locate(object, callable) Hashie::Extensions::DeepLocate.deep_locate(callable, object).deep_dup end
nested_aggs_from(raw_bucket)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 127 def nested_aggs_from(raw_bucket) RawAggregationDataNormaliser.new(aggregations_factory, raw_bucket).normalise end
normalise_bucket(raw_bucket)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 109 def normalise_bucket(raw_bucket) basic_bucket(raw_bucket).tap do |bucket| nested_aggs = nested_aggs_from(raw_bucket) bucket[:aggregations] = nested_aggs if nested_aggs.present? end end
normalise_element(name, value)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 71 def normalise_element(name, value) return unless Hash === value if value.key?(:buckets) add_normalised_buckets_element_to_list(name, value) elsif value.key?(:value) add_normalised_value_element_to_list(name, value) else nested = value.select { |_k, e| IS_NESTED_COUNTS.call e } if nested.present? add_normalised_nested_counts_to_list(name, nested) else normalise_hash(value) end end end
normalise_hash(hash)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 36 def normalise_hash(hash) treat_buckets(hash) treat_values(hash) treat_counts(hash) end
treat_buckets(hash)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 42 def treat_buckets(hash) with_buckets_list = deep_locate hash, FIND_BUCKETS with_buckets_list.each do |with_buckets| with_buckets.each do |name, value| normalise_element(name, value) end end end
treat_counts(hash)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 62 def treat_counts(hash) with_values_list = deep_locate hash, FIND_COUNTS with_values_list.each do |with_values| with_values.each do |name, value| normalise_element(name, value) end end end
treat_values(hash)
click to toggle source
# File lib/artirix_data_models/raw_aggregation_data_normaliser.rb, line 52 def treat_values(hash) with_values_list = deep_locate hash, FIND_VALUE with_values_list.each do |with_values| with_values.each do |name, value| normalise_element(name, value) end end end