Class: SqlGenius::Core::Result
- Inherits:
-
Object
- Object
- SqlGenius::Core::Result
- 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
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#rows ⇒ Object
readonly
Returns the value of attribute rows.
Instance Method Summary collapse
- #count ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(columns:, rows:) ⇒ Result
constructor
A new instance of Result.
- #to_a ⇒ Object
-
#to_hashes ⇒ Object
Returns rows as an array of hashes keyed by column name.
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
#columns ⇒ Object (readonly)
Returns the value of attribute columns.
10 11 12 |
# File 'lib/sql_genius/core/result.rb', line 10 def columns @columns end |
#rows ⇒ Object (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
#count ⇒ Object
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
32 33 34 |
# File 'lib/sql_genius/core/result.rb', line 32 def empty? @rows.empty? end |
#to_a ⇒ Object
24 25 26 |
# File 'lib/sql_genius/core/result.rb', line 24 def to_a @rows.dup end |
#to_hashes ⇒ Object
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 |