class Baza::Driver::Sqlite3::Result
This class handels the result when running MRI (or others).
Public Class Methods
new(driver, statement)
click to toggle source
Constructor. This should not be called manually.
# File lib/baza/driver/sqlite3/result.rb, line 4 def initialize(driver, statement) @statement = statement begin @statement.execute @type_translation = driver.db.opts[:type_translation] @types = statement.types if @type_translation == true @columns = statement.columns.map(&:to_sym) read_results @index = -1 ensure @statement.close end end
Public Instance Methods
each() { |data| ... }
click to toggle source
Loops over every result yielding them.
# File lib/baza/driver/sqlite3/result.rb, line 34 def each loop do data = fetch if data yield data else break end end end
fetch()
click to toggle source
Returns a single result.
# File lib/baza/driver/sqlite3/result.rb, line 20 def fetch row = @results[@index += 1] return unless row if @types row.map!.with_index { |value, index| translate_type(value, @types[index]) } if @types elsif @type_translation == :string row.map!(&:to_s) end Hash[*@columns.zip(row).flatten] end
Private Instance Methods
read_results()
click to toggle source
# File lib/baza/driver/sqlite3/result.rb, line 48 def read_results @results = [] loop do row = @statement.step break if @statement.done? @results << row end end
translate_type(value, type)
click to toggle source
# File lib/baza/driver/sqlite3/result.rb, line 58 def translate_type(value, type) return if value.to_s.empty? if type == "datetime" return nil if value == "NULL" return Time.parse(value) elsif type == "date" return nil if value == "NULL" return Date.parse(value) else value end end