Class: Parse::AggregationResult
- Inherits:
-
Object
- Object
- Parse::AggregationResult
- 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.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Hash-style access with string or symbol keys.
-
#initialize(data) ⇒ AggregationResult
constructor
A new instance of AggregationResult.
- #inspect ⇒ Object
-
#key?(key) ⇒ Boolean
Check if a key exists.
-
#keys ⇒ Array<Symbol>
Get all keys (snake_case symbols).
-
#method_missing(method_name, *args, &block) ⇒ Object
Method-style access to fields.
-
#raw ⇒ Hash
Get the raw data as originally received.
- #respond_to_missing?(method_name, include_private = false) ⇒ Boolean
-
#to_h ⇒ Hash
(also: #to_hash)
Convert to hash with snake_case symbol keys.
Constructor Details
#initialize(data) ⇒ AggregationResult
Returns a new instance of AggregationResult.
5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 |
# File 'lib/parse/query.rb', line 5420 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
5468 5469 5470 5471 5472 5473 5474 5475 |
# File 'lib/parse/query.rb', line 5468 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
5435 5436 5437 |
# File 'lib/parse/query.rb', line 5435 def [](key) @data[key.to_s] || @data[key.to_sym] end |
#inspect ⇒ Object
5481 5482 5483 |
# File 'lib/parse/query.rb', line 5481 def inspect "#<Parse::AggregationResult #{to_h.inspect}>" end |
#key?(key) ⇒ Boolean
Check if a key exists
5442 5443 5444 |
# File 'lib/parse/query.rb', line 5442 def key?(key) @data.key?(key.to_s) || @data.key?(key.to_sym) end |
#keys ⇒ Array<Symbol>
Get all keys (snake_case symbols)
5448 5449 5450 |
# File 'lib/parse/query.rb', line 5448 def keys @data.keys.select { |k| k.is_a?(Symbol) } end |
#raw ⇒ Hash
Get the raw data as originally received
5463 5464 5465 |
# File 'lib/parse/query.rb', line 5463 def raw @raw_data end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
5477 5478 5479 |
# File 'lib/parse/query.rb', line 5477 def respond_to_missing?(method_name, include_private = false) @data.key?(method_name.to_sym) || super end |