Class: Noiseless::AST::AggregationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/noiseless/ast/aggregation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAggregationBuilder

Returns a new instance of AggregationBuilder.



36
37
38
# File 'lib/noiseless/ast/aggregation.rb', line 36

def initialize
  @aggregations = []
end

Instance Attribute Details

#aggregationsObject (readonly)

Returns the value of attribute aggregations.



34
35
36
# File 'lib/noiseless/ast/aggregation.rb', line 34

def aggregations
  @aggregations
end

Instance Method Details

#agg(name, type, field: nil) ⇒ Object Also known as: aggregation



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/noiseless/ast/aggregation.rb', line 40

def agg(name, type, field: nil, **, &)
  sub_aggs = []
  if block_given?
    sub_builder = AggregationBuilder.new
    sub_builder.instance_eval(&)
    sub_aggs = sub_builder.aggregations
  end

  aggregation = Aggregation.new(name, type, field: field, sub_aggregations: sub_aggs, **)
  @aggregations << aggregation
  aggregation
end