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



6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
# File 'lib/parse/query.rb', line 6123

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



6171
6172
6173
6174
6175
6176
6177
6178
# File 'lib/parse/query.rb', line 6171

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



6138
6139
6140
# File 'lib/parse/query.rb', line 6138

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

#inspectObject



6184
6185
6186
# File 'lib/parse/query.rb', line 6184

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

#key?(key) ⇒ Boolean

Check if a key exists

Parameters:

Returns:

  • (Boolean)


6145
6146
6147
# File 'lib/parse/query.rb', line 6145

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

#keysArray<Symbol>

Get all keys (snake_case symbols)

Returns:



6151
6152
6153
# File 'lib/parse/query.rb', line 6151

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

#rawHash

Get the raw data as originally received

Returns:



6166
6167
6168
# File 'lib/parse/query.rb', line 6166

def raw
  @raw_data
end

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

Returns:

  • (Boolean)


6180
6181
6182
# File 'lib/parse/query.rb', line 6180

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:



6157
6158
6159
# File 'lib/parse/query.rb', line 6157

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