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
# File lib/humble/database_table.rb, line 13
def primary_key(name, default: 0)
  @primary_key = PrimaryKeyColumn.new(name, default)
end

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