class YeSQL::Query::TransformResult

Attributes

output[R]
result[R]

Public Class Methods

new(output:, result:) click to toggle source
# File lib/yesql/query/transform_result.rb, line 14
def initialize(output:, result:)
  @output = output
  @result = result
end

Public Instance Methods

call() click to toggle source
# File lib/yesql/query/transform_result.rb, line 19
def call
  if rails_5? && mysql?
    return columns if columns?
    return rows_values if rows?
    return array_of_symbol_hashes if hash?
  end

  return result.public_send(output.to_sym) if columns? || rows?

  to_a.map(&:symbolize_keys)
end

Private Instance Methods

array_of_symbol_hashes() click to toggle source
# File lib/yesql/query/transform_result.rb, line 42
def array_of_symbol_hashes
  to_a
    .tap { |rows| break hashed_rows(rows) if ::ActiveRecord::VERSION::MAJOR == 5 }
    .map { |e| e.respond_to?(:symbolize_keys) ? e.symbolize_keys : e }
end
columns() click to toggle source
# File lib/yesql/query/transform_result.rb, line 52
def columns
  fields || result.columns
end
hashed_rows(rows) click to toggle source
# File lib/yesql/query/transform_result.rb, line 48
def hashed_rows(rows)
  rows.map { |row| columns.zip(row).to_h }
end
rails_5?() click to toggle source
# File lib/yesql/query/transform_result.rb, line 56
def rails_5?
  ::ActiveRecord::VERSION::MAJOR == 5
end
rows_values() click to toggle source
# File lib/yesql/query/transform_result.rb, line 38
def rows_values
  to_a.map { |e| e.respond_to?(:values) ? e.values : e }
end