class ActiveRecord::ConnectionAdapters::AuroraServerless::Mysql2::Result

Constants

VALUE_METHODS

Attributes

response[R]

Public Class Methods

new(response) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 13
def initialize(response)
  @response = response
end

Public Instance Methods

each(**kwargs) { |r| ... } click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 28
def each(**kwargs)
  eobj = each_object(kwargs)
  block_given? ? eobj.each { |r| yield(r) } : eobj
end
fields() click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 17
def fields
  @fields ||= begin
    md = @response.column_metadata
    md ? md.map(&:label) : []
  end
end
to_a() click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 24
def to_a
  as_array
end

Private Instance Methods

as_array() click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 40
def as_array
  @as_array ||= (@response.records || []).map do |fields|
    fields.each_with_index.map do |field, index|
      type = @response.column_metadata[index].type_name
      type_cast(field, type)
    end
  end
end
as_hash(symbolize_keys = true) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 49
def as_hash(symbolize_keys = true)
  @as_hash ||= begin
    h = ActiveRecord::Result.new(fields, as_array).to_a
    symbolize_keys ? h.map { |r| r.symbolize_keys! } : h
  end
end
each_object(**kwargs) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 35
def each_object(**kwargs)
  symbolize_keys = kwargs[:symbolize_keys]
  kwargs[:as] == :hash ? as_hash(symbolize_keys) : as_array
end
type_cast(field, type) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 56
def type_cast(field, type)
  return if field.is_null
  vmeth = VALUE_METHODS[type] || :string_value
  value = field.public_send(vmeth)
  case type
  when 'DECIMAL'   then type_cast_decimal(value)
  when 'DATE'      then type_cast_date(value)
  when 'YEAR'      then type_cast_year(value)
  else
    value
  end
end
type_cast_date(v) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 73
def type_cast_date(v)
  Date.parse(v)
end
type_cast_decimal(v) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 69
def type_cast_decimal(v)
  BigDecimal(v)
end
type_cast_year(v) click to toggle source
# File lib/active_record/connection_adapters/aurora_serverless/mysql2/result.rb, line 77
def type_cast_year(v)
  v.to_i
end