Class: QueryRow

Inherits:
Object
  • Object
show all
Defined in:
lib/sql_builder/query_row.rb

Overview

base class for objects representing a single row in a query result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result, raw) ⇒ QueryRow

Returns a new instance of QueryRow.



6
7
8
9
# File 'lib/sql_builder/query_row.rb', line 6

def initialize(result, raw)
  @result = result
  @raw = raw
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



4
5
6
# File 'lib/sql_builder/query_row.rb', line 4

def raw
  @raw
end

Instance Method Details

#[](key) ⇒ Object



11
12
13
# File 'lib/sql_builder/query_row.rb', line 11

def [](key)
  @raw[key.to_s]
end

#[]=(key, value) ⇒ Object



15
16
17
# File 'lib/sql_builder/query_row.rb', line 15

def []=(key, value)
  @raw[key.to_s] = value
end

#as_json(options = {}) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/sql_builder/query_row.rb', line 33

def as_json(options={})
  attrs = {}
  @result.columns.each do |col|
    attrs[col[:name]] = self.serialize_value col
  end
  attrs
end

#inspectObject



19
20
21
# File 'lib/sql_builder/query_row.rb', line 19

def inspect
  '{' + @result.columns.map{|col| "#{col[:name]}=#{self.send(col[:name])}"}.join(', ') + '}'
end

#keysObject



41
42
43
# File 'lib/sql_builder/query_row.rb', line 41

def keys
  @result.column_names
end

#serialize_value(column) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/sql_builder/query_row.rb', line 23

def serialize_value(column)
  value = self.send(column[:name])
  case column[:type]
  when :time
    value&.to_s
  else
    value
  end
end