class Raamen::SQLObject
Public Class Methods
all()
click to toggle source
# File lib/raamen/sql_object.rb, line 42 def self.all parse_all(results = DBConnection.execute(<<-SQL)) SELECT * FROM #{self.table_name} SQL end
columns()
click to toggle source
# File lib/raamen/sql_object.rb, line 11 def self.columns @columns ||= DBConnection.execute2(<<-SQL).first.map(&:to_sym) SELECT * FROM #{self.table_name} LIMIT 0 SQL end
finalize!()
click to toggle source
# File lib/raamen/sql_object.rb, line 22 def self.finalize! self.columns.each do |col| define_method(col) do attributes[col] end define_method("#{col}=") do |value| attributes[col] = value end end end
find(id)
click to toggle source
# File lib/raamen/sql_object.rb, line 57 def self.find(id) parse_all(DBConnection.execute(<<-SQL, id)).first SELECT * FROM #{self.table_name} WHERE id = ? SQL end
new(params = {})
click to toggle source
# File lib/raamen/sql_object.rb, line 68 def initialize(params = {}) params.each do |col, value| col = col.to_sym raise "unknown attribute '#{col}'" unless self.class.columns.include?(col) self.send("#{col}=", value) end end
parse_all(results)
click to toggle source
# File lib/raamen/sql_object.rb, line 51 def self.parse_all(results) results.map do |result| self.new(result) end end
table_name()
click to toggle source
# File lib/raamen/sql_object.rb, line 38 def self.table_name @table_name || self.name.tableize end
table_name=(table_name)
click to toggle source
# File lib/raamen/sql_object.rb, line 34 def self.table_name=(table_name) @table_name = table_name end
Public Instance Methods
attribute_values()
click to toggle source
# File lib/raamen/sql_object.rb, line 80 def attribute_values self.class.columns.map do |col| self.send(col) end end
attributes()
click to toggle source
# File lib/raamen/sql_object.rb, line 76 def attributes @attributes ||= {} end
insert()
click to toggle source
# File lib/raamen/sql_object.rb, line 86 def insert columns = self.class.columns.drop(1) col_names = columns.map(&:to_sym).join(", ") question_marks = (["?"] * columns.count).join(", ") DBConnection.execute(<<-SQL, attribute_values.drop(1)) INSERT INTO #{self.class.table_name} (#{col_names}) VALUES (#{question_marks}) SQL self.id = DBConnection.last_insert_row_id end
save()
click to toggle source
# File lib/raamen/sql_object.rb, line 116 def save id.nil? ? insert : update end
update()
click to toggle source
# File lib/raamen/sql_object.rb, line 101 def update set_line = self.class.columns.map do |col| "#{col}= ?" end.join(", ") DBConnection.execute(<<-SQL, *attribute_values, id) UPDATE #{self.class.table_name} SET #{set_line} WHERE id = ? SQL end