Class: Parse::AggregationResult

Inherits:
Object
  • Object
show all
Defined in:
lib/parse/query.rb

Overview

Wrapper class for custom aggregation results (from $group, $project, etc.) Provides both hash-style access and method-style access to fields. Field names are automatically converted from camelCase to snake_case.

Examples:

result = AggregationResult.new({ "_id" => "Rock", "totalPlays" => 500 })
result["_id"]        # => "Rock"
result[:total_plays] # => 500
result.total_plays   # => 500

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ AggregationResult

Returns a new instance of AggregationResult.

Parameters:

  • data (Hash)

    the raw aggregation result hash



6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
# File 'lib/parse/query.rb', line 6049

def initialize(data)
  @data = {}
  @raw_data = data

  # Convert keys to snake_case and store
  data.each do |key, value|
    snake_key = Parse::Query.to_snake_case(key.to_s)
    @data[snake_key.to_sym] = value
    @data[key.to_s] = value  # Also keep original key for hash access
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object

Method-style access to fields



6097
6098
6099
6100
6101
6102
6103
6104
# File 'lib/parse/query.rb', line 6097

def method_missing(method_name, *args, &block)
  key = method_name.to_sym
  if @data.key?(key)
    @data[key]
  else
    super
  end
end

Instance Method Details

#[](key) ⇒ Object

Hash-style access with string or symbol keys

Parameters:

Returns:

  • (Object)

    the field value



6064
6065
6066
# File 'lib/parse/query.rb', line 6064

def [](key)
  @data[key.to_s] || @data[key.to_sym]
end

#inspectObject



6110
6111
6112
# File 'lib/parse/query.rb', line 6110

def inspect
  "#<Parse::AggregationResult #{to_h.inspect}>"
end

#key?(key) ⇒ Boolean

Check if a key exists

Parameters:

Returns:

  • (Boolean)


6071
6072
6073
# File 'lib/parse/query.rb', line 6071

def key?(key)
  @data.key?(key.to_s) || @data.key?(key.to_sym)
end

#keysArray<Symbol>

Get all keys (snake_case symbols)

Returns:



6077
6078
6079
# File 'lib/parse/query.rb', line 6077

def keys
  @data.keys.select { |k| k.is_a?(Symbol) }
end

#rawHash

Get the raw data as originally received

Returns:



6092
6093
6094
# File 'lib/parse/query.rb', line 6092

def raw
  @raw_data
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


6106
6107
6108
# File 'lib/parse/query.rb', line 6106

def respond_to_missing?(method_name, include_private = false)
  @data.key?(method_name.to_sym) || super
end

#to_hHash Also known as: to_hash

Convert to hash with snake_case symbol keys

Returns:



6083
6084
6085
# File 'lib/parse/query.rb', line 6083

def to_h
  @data.select { |k, _| k.is_a?(Symbol) }
end