# File lib/humble/database_table.rb, line 13 def primary_key(name, default: 0) @primary_key = PrimaryKeyColumn.new(name, default) end
class Humble::DatabaseTable
Attributes
name[R]
Public Class Methods
new()
click to toggle source
# File lib/humble/database_table.rb, line 5 def initialize @columns = [] end
Public Instance Methods
add_column(name)
click to toggle source
# File lib/humble/database_table.rb, line 17 def add_column(name) @columns << Column.new(name) end
destroy(connection, entity)
click to toggle source
# File lib/humble/database_table.rb, line 29 def destroy(connection, entity) @primary_key.destroy(connection[@name], entity) end
named(name)
click to toggle source
# File lib/humble/database_table.rb, line 9 def named(name) @name = name end
persist(connection, item)
click to toggle source
# File lib/humble/database_table.rb, line 21 def persist(connection, item) if @primary_key.has_default_value?(item) @primary_key.apply(insert(item, connection[@name]) , item) else update(item, connection[@name]) end end
primary_key(name, default: 0)
click to toggle source
Private Instance Methods
insert(item, dataset)
click to toggle source
# File lib/humble/database_table.rb, line 41 def insert(item, dataset) dataset.insert(prepare_statement_for(item)) end
prepare_statement_for(item)
click to toggle source
# File lib/humble/database_table.rb, line 35 def prepare_statement_for(item) @columns.inject({}) do |result, column| result.merge(column.prepare(item)) end end
update(item, dataset)
click to toggle source
# File lib/humble/database_table.rb, line 45 def update(item, dataset) dataset.update(prepare_statement_for(item)) end