Class: DB::Postgres::Native::Result

Inherits:
FFI::Pointer
  • Object
show all
Defined in:
lib/db/postgres/native/result.rb

Instance Method Summary collapse

Constructor Details

#initialize(connection, types = {}, address) ⇒ Result

Returns a new instance of Result.



57
58
59
60
61
62
63
64
# File 'lib/db/postgres/native/result.rb', line 57

def initialize(connection, types = {}, address)
  super(address)
  
  @connection = connection
  @fields = nil
  @types = types
  @casts = nil
end

Instance Method Details

#cast!(row) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
# File 'lib/db/postgres/native/result.rb', line 82

def cast!(row)
  @casts ||= self.field_types
  
  row.size.times do |index|
    if cast = @casts[index]
      row[index] = cast.parse(row[index])
    end
  end
  
  return row
end

#eachObject



94
95
96
97
98
99
100
# File 'lib/db/postgres/native/result.rb', line 94

def each
  row_count.times do |i|
    yield cast!(get_row(i))
  end
  
  Native.clear(self)
end

#field_countObject



66
67
68
# File 'lib/db/postgres/native/result.rb', line 66

def field_count
  Native.field_count(self)
end

#field_namesObject



74
75
76
# File 'lib/db/postgres/native/result.rb', line 74

def field_names
  field_count.times.collect{|i| Native.field_name(self, i)}
end

#field_typesObject



70
71
72
# File 'lib/db/postgres/native/result.rb', line 70

def field_types
  field_count.times.collect{|i| @types[Native.field_type(self, i)]}
end

#map(&block) ⇒ Object



102
103
104
105
106
107
108
109
110
# File 'lib/db/postgres/native/result.rb', line 102

def map(&block)
  results = []
  
  self.each do |row|
    results << yield(row)
  end
  
  return results
end

#row_countObject



78
79
80
# File 'lib/db/postgres/native/result.rb', line 78

def row_count
  Native.row_count(self)
end

#to_aObject



112
113
114
115
116
117
118
119
120
# File 'lib/db/postgres/native/result.rb', line 112

def to_a
  rows = []
  
  self.each do |row|
    rows << row
  end
  
  return rows
end