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