Class: Lore::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/lore/result.rb

Overview

:nodoc

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query, result) ⇒ Result

expects PGresult



12
13
14
15
16
17
18
19
20
21
# File 'lib/lore/result.rb', line 12

def initialize(query, result) # expects PGresult
  
  @result = result
  @field_types      = nil
  @result_rows      = Array.new
# @query_hashval    = Digest::MD5.hexdigest(query)
  @num_fields       = @result.num_fields
  @field_counter    = 0
  
end

Instance Attribute Details

#query_hashvalObject (readonly)

Returns the value of attribute query_hashval.



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

def query_hashval
  @query_hashval
end

Instance Method Details

#fieldname(index) ⇒ Object



111
112
113
114
115
# File 'lib/lore/result.rb', line 111

def fieldname(index)
  
  return @result.fieldname(index)
  
end

#get_field_namesObject

def get_field_value



30
31
32
# File 'lib/lore/result.rb', line 30

def get_field_names()
  return @result.fields
end

#get_field_numObject



46
47
48
# File 'lib/lore/result.rb', line 46

def get_field_num()
  return @result.num_fields
end

#get_field_typesObject



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/lore/result.rb', line 34

def get_field_types()
  
  return @field_types unless @field_types.nil?
  
  @field_types = Hash.new
  for field_index in 0...get_field_num()
    @field_types[@result.fields[field_index]] = @result.type(field_index)
  end
  
  return @field_types
end

#get_field_value(row_index, field_name) ⇒ Object

def initialize



23
24
25
26
27
28
# File 'lib/lore/result.rb', line 23

def get_field_value(row_index, field_name)
  
  field_index = @result.fieldnum(field_name)
  return @result.getvalue(row_index, field_index)
  
end

#get_row(row_num = 0) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/lore/result.rb', line 54

def get_row(row_num=0)

  return @result_rows.at(row_num) if @result_rows.at(row_num)   
  return if @result.num_tuples == 0

  # We cannot use a hash here, as there might be 
  # duplicate attribute names due to joins: 
  #
  # { 
  #   :fields => [ 'id', 'foo', 'foreign_id, 'id', 'bar' ]
  #   :values => [ '1', 'wombat', '5', '5', 'cthulluh' ]
  # }
  row_result        = Array.new
  
  @field_counter = 0
  for @field_counter in 0...@num_fields do
    row_result << @result.getvalue(row_num, @field_counter)
  end
  @result_rows[row_num] = row_result
  return row_result
  
end

#get_row_with_field_names(row_num = 0) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/lore/result.rb', line 76

def get_row_with_field_names(row_num=0)

  return @result_rows.at(row_num) if @result_rows.at(row_num)   
  return if @result.num_tuples == 0

  row_result        = Array.new
  
  @field_counter = 0
  for @field_counter in 0...@num_fields do
    row_result << @result.getvalue(row_num, @field_counter)
  end
  @result_rows[row_num] = row_result
  @fieldnames = []
  for @field_counter in 0...@num_fields do
    @fieldnames << @result.fieldname(@field_counter)
  end
  return { :values => row_result, :fields => @fieldnames }
  
end

#get_rowsObject



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/lore/result.rb', line 96

def get_rows()
  if !@result_rows.first then
    for tuple_counter in 0...@result.num_tuples do
      get_row(tuple_counter)
    end
    @fieldnames = []
    for @field_counter in 0...@num_fields do
      @fieldnames << @result.fieldname(@field_counter)
    end
  end

  result = { :values => @result_rows, :fields => @fieldnames }
  return result
end

#get_tuple_numObject



50
51
52
# File 'lib/lore/result.rb', line 50

def get_tuple_num()
  return @result.num_tuples
end