class SQLObject
Public Class Methods
all()
click to toggle source
# File lib/easy_save/sql_object.rb, line 43 def self.all sql = <<-SQL SELECT * FROM #{self.table_name} SQL results = DBConnection.execute(sql) self.parse_all(results) end
columns()
click to toggle source
# File lib/easy_save/sql_object.rb, line 23 def self.columns self.first_row @results.first.map(&:to_sym) end
finalize!()
click to toggle source
# File lib/easy_save/sql_object.rb, line 28 def self.finalize! self.columns.each do |col| define_method(col) { attributes[col] } define_method("#{col}=") { |val| attributes[col] = val } end end
find(id)
click to toggle source
# File lib/easy_save/sql_object.rb, line 59 def self.find(id) sql = <<-SQL SELECT * FROM #{self.table_name} WHERE id = ? SQL result = DBConnection.execute(sql, id).first result ? new(result) : nil end
first()
click to toggle source
# File lib/easy_save/sql_object.rb, line 73 def self.first sql = <<-SQL SELECT * FROM #{self.table_name} SQL result = DBConnection.execute(sql).first result ? new(result) : nil end
first_row()
click to toggle source
# File lib/easy_save/sql_object.rb, line 12 def self.first_row sql = <<-SQL SELECT * FROM #{table_name} SQL @results ||= DBConnection.execute2(sql) end
new(params = {})
click to toggle source
# File lib/easy_save/sql_object.rb, line 86 def initialize(params = {}) params.each do |attr_name, val| unless self.class.columns.include?(attr_name.to_sym) raise "unknown attribute '#{attr_name}'" end self.send("#{attr_name}=", val) end end
parse_all(results)
click to toggle source
# File lib/easy_save/sql_object.rb, line 55 def self.parse_all(results) results.inject([]) { |final, res| final.push(new(res)) } end
table_name()
click to toggle source
# File lib/easy_save/sql_object.rb, line 39 def self.table_name @table_name ||= self.to_s.tableize end
table_name=(table_name)
click to toggle source
# File lib/easy_save/sql_object.rb, line 35 def self.table_name=(table_name) @table_name = table_name end
Public Instance Methods
attribute_values()
click to toggle source
# File lib/easy_save/sql_object.rb, line 99 def attribute_values @attributes.values end
attributes()
click to toggle source
# File lib/easy_save/sql_object.rb, line 95 def attributes @attributes ||= {} end
insert()
click to toggle source
# File lib/easy_save/sql_object.rb, line 103 def insert col_names = self.class.columns.drop(1).join(", ") question_marks = (["?"] * (self.class.columns.length - 1)).join(", ") col_names = "(#{col_names})" question_marks = "(#{question_marks})" sql = <<-SQL INSERT INTO #{self.class.table_name} #{col_names} VALUES #{question_marks} SQL DBConnection.execute(sql, attribute_values) self.id = DBConnection.last_insert_row_id end
save()
click to toggle source
# File lib/easy_save/sql_object.rb, line 138 def save id.nil? ? insert : update end
update()
click to toggle source
# File lib/easy_save/sql_object.rb, line 121 def update set_values = self.class.columns.map do |el| "#{el} = ?" end.join(', ') sql = <<-SQL UPDATE #{self.class.table_name} SET #{set_values} WHERE id = #{id} SQL DBConnection.execute(sql, *attribute_values) end