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



5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
# File 'lib/parse/query.rb', line 5281

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



5329
5330
5331
5332
5333
5334
5335
5336
# File 'lib/parse/query.rb', line 5329

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



5296
5297
5298
# File 'lib/parse/query.rb', line 5296

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

#inspectObject



5342
5343
5344
# File 'lib/parse/query.rb', line 5342

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

#key?(key) ⇒ Boolean

Check if a key exists

Parameters:

Returns:

  • (Boolean)


5303
5304
5305
# File 'lib/parse/query.rb', line 5303

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

#keysArray<Symbol>

Get all keys (snake_case symbols)

Returns:



5309
5310
5311
# File 'lib/parse/query.rb', line 5309

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

#rawHash

Get the raw data as originally received

Returns:



5324
5325
5326
# File 'lib/parse/query.rb', line 5324

def raw
  @raw_data
end

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

Returns:

  • (Boolean)


5338
5339
5340
# File 'lib/parse/query.rb', line 5338

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:



5315
5316
5317
# File 'lib/parse/query.rb', line 5315

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