Module: FeideeUtils::Record::Persistent::ClassMethods

Included in:
FeideeUtils::Record
Defined in:
lib/feidee_utils/record/persistent.rb

Instance Method Summary collapse

Instance Method Details

#allObject

Persistent



38
39
40
41
42
43
44
45
46
# File 'lib/feidee_utils/record/persistent.rb', line 38

def all
  arr = []
  database.query("SELECT * FROM #{self.table_name}") do |result|
    result.each do |raw_row|
      arr << self.new(raw_row)
    end
  end
  arr
end

#column_namesObject



33
34
35
# File 'lib/feidee_utils/record/persistent.rb', line 33

def column_names
  @column_names ||= self.columns.map do |entry| entry["name"] end.freeze
end

#columnsObject



29
30
31
# File 'lib/feidee_utils/record/persistent.rb', line 29

def columns
  database.table_info(self.table_name)
end

#find(id) ⇒ Object



65
66
67
# File 'lib/feidee_utils/record/persistent.rb', line 65

def find(id)
  find_by_id(id) or raise "No #{self.entity_name} of poid #{id} found"
end

#find_by_id(id) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/feidee_utils/record/persistent.rb', line 48

def find_by_id(id)
  raw_result = database.query(
    "SELECT * FROM #{self.table_name} WHERE #{self.id_field_name} = ?",
    id
  )

  raw_row = raw_result.next
  return nil if raw_row == nil

  if raw_result.next != nil
    raise "Getting more than one result with the same ID #{id} " +
      "in table #{self.table_name}."
  end

  self.new(raw_row)
end