class Soapforce::QueryResult

Attributes

raw_result[R]

Public Class Methods

new(result={}) click to toggle source
# File lib/soapforce/query_result.rb, line 7
def initialize(result={})
  if result.is_a?(Soapforce::Result)
    @raw_result = result.to_hash
  else
    @raw_result = result
  end

  @result_records = [] # Default for 0 size response.
  @key_type = @raw_result.key?(:size) ? :symbol : :string

  records_key = key_name("records")

  if @raw_result[records_key]
    @result_records = @raw_result[records_key]
    # Single records come back as a Hash. Wrap in array.
    if @result_records.is_a?(Hash)
      @result_records = [@result_records]
    end
  end

  # Convert to SObject type.
  @result_records.map! {|hash| SObject.new(hash) }
end

Public Instance Methods

done?() click to toggle source
# File lib/soapforce/query_result.rb, line 48
def done?
  @raw_result[key_name("done")].nil? ? true : @raw_result[key_name("done")]
end
each(&block) click to toggle source

Implmentation for Enumerable mix-in.

# File lib/soapforce/query_result.rb, line 36
def each(&block)
  @result_records.each(&block)
end
key_name(key) click to toggle source
# File lib/soapforce/query_result.rb, line 62
def key_name(key)
  if @key_type == :symbol
    key.is_a?(String) ? key.snakecase.to_sym : key
  else
    key.to_s
  end
end
map(&block) click to toggle source
# File lib/soapforce/query_result.rb, line 40
def map(&block)
  @result_records.map(&block)
end
method_missing(method, *args, &block) click to toggle source
# File lib/soapforce/query_result.rb, line 56
def method_missing(method, *args, &block)
  if @result_records.respond_to?(method)
    @result_records.send(method, *args, &block)
  end
end
query_locator() click to toggle source
# File lib/soapforce/query_result.rb, line 52
def query_locator
  @raw_result[key_name("queryLocator")]
end
records() click to toggle source
# File lib/soapforce/query_result.rb, line 31
def records
  @result_records
end
size() click to toggle source
# File lib/soapforce/query_result.rb, line 44
def size
  @raw_result[key_name("size")].to_i || 0
end