Class: SqlGenius::Core::Result

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sql_genius/core/result.rb

Overview

Immutable value object representing the result of a query. Adapters translate their native result types into this shape.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(columns:, rows:) ⇒ Result

Returns a new instance of Result.



12
13
14
15
16
# File 'lib/sql_genius/core/result.rb', line 12

def initialize(columns:, rows:)
  @columns = columns.freeze
  @rows = rows.freeze
  freeze
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



10
11
12
# File 'lib/sql_genius/core/result.rb', line 10

def columns
  @columns
end

#rowsObject (readonly)

Returns the value of attribute rows.



10
11
12
# File 'lib/sql_genius/core/result.rb', line 10

def rows
  @rows
end

Instance Method Details

#countObject



28
29
30
# File 'lib/sql_genius/core/result.rb', line 28

def count
  @rows.length
end

#each(&block) ⇒ Object



18
19
20
21
22
# File 'lib/sql_genius/core/result.rb', line 18

def each(&block)
  return @rows.each unless block

  @rows.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/sql_genius/core/result.rb', line 32

def empty?
  @rows.empty?
end

#to_aObject



24
25
26
# File 'lib/sql_genius/core/result.rb', line 24

def to_a
  @rows.dup
end

#to_hashesObject

Returns rows as an array of hashes keyed by column name. Mirrors ActiveRecord::Result#to_a’s hashification behavior.



38
39
40
# File 'lib/sql_genius/core/result.rb', line 38

def to_hashes
  @rows.map { |row| @columns.zip(row).to_h }
end