class Peictt::DatabaseMapper
Attributes
table[RW]
Public Class Methods
new(model, action = :create)
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 9 def initialize(model, action = :create) self.class.table = model.class.to_s.downcase.pluralize @model = model @action = action @variables = model.instance_variables set_columns_and_values add_timestamps if create? self end
Public Instance Methods
save()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 19 def save Database.execute_query query, @values true end
Private Instance Methods
add_timestamps()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 50 def add_timestamps @placeholders << "?" @placeholders << "?" @columns << "created_at" @columns << "updated_at" @values << Time.now.to_s @values << Time.now.to_s end
build_create_query()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 59 def build_create_query "INSERT INTO #{self.class.table} (#{@columns.join(', ')})"\ "VALUES (#{@placeholders.join(', ')})" end
build_update_query()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 64 def build_update_query prepare_columns_and_values_for_update columns_and_placeholders = @columns.zip(@placeholders[1..-1]). map { |pair| pair.join " = " } "UPDATE #{self.class.table} SET #{columns_and_placeholders.join(', ')} "\ "WHERE id = ?" end
create?()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 34 def create? @action == :create end
prepare_columns_and_values_for_update()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 43 def prepare_columns_and_values_for_update id_index = @columns.index "id" @columns.delete_at(id_index) id_value = @values.delete_at id_index @values << id_value end
query()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 26 def query if create? return build_create_query else return build_update_query end end
set_columns_and_values()
click to toggle source
# File lib/peictt/orm/database_mapper.rb, line 38 def set_columns_and_values @placeholders, @columns = self.class.set_columns_for_instance @variables @values = self.class.get_values_for_instance(@model, @variables) end