Class: CouchdbToSql::TableBuilder

Inherits:
TableOperator show all
Defined in:
lib/couchdb_to_sql/table_builder.rb

Overview

Table definition handler which handles database INSERT operations.

Direct Known Subclasses

TableDeletedMarker

Instance Attribute Summary collapse

Attributes inherited from TableOperator

#parent, #primary_key, #table_name

Instance Method Summary collapse

Methods inherited from TableOperator

#deduce_primary_key, #handler

Constructor Details

#initialize(parent, table_name, opts = {}, &block) ⇒ TableBuilder

Returns a new instance of TableBuilder.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/couchdb_to_sql/table_builder.rb', line 13

def initialize(parent, table_name, opts = {}, &block)
  @_collections = []

  @parent     = parent
  @data       = opts[:data] || parent.document
  @table_name = table_name.to_sym

  deduce_primary_key(opts)

  @attributes = {}
  set_primary_key_attribute
  set_attributes_from_data

  instance_eval(&block) if block_given?
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



10
11
12
# File 'lib/couchdb_to_sql/table_builder.rb', line 10

def attributes
  @attributes
end

#dataObject (readonly)

Returns the value of attribute data.



11
12
13
# File 'lib/couchdb_to_sql/table_builder.rb', line 11

def data
  @data
end

Instance Method Details

#column(*args) ⇒ Object

DSL Methods



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/couchdb_to_sql/table_builder.rb', line 44

def column(*args)
  column = args.first
  field  = args.last

  if block_given?
    set_attribute(column, yield)
  elsif field.is_a?(Symbol)
    set_attribute(column, data[field.to_s])
  elsif args.length > 1
    set_attribute(column, field)
  end
end

#databaseObject



38
39
40
# File 'lib/couchdb_to_sql/table_builder.rb', line 38

def database
  @database ||= handler.database
end

#documentObject Also known as: doc



33
34
35
# File 'lib/couchdb_to_sql/table_builder.rb', line 33

def document
  parent.document
end

#executeObject

Support Methods



59
60
61
62
63
# File 'lib/couchdb_to_sql/table_builder.rb', line 59

def execute
  # Insert the record and prepare ID for sub-tables
  id = dataset.insert(attributes)
  set_attribute(primary_key, id) unless id.blank?
end

#idObject



29
30
31
# File 'lib/couchdb_to_sql/table_builder.rb', line 29

def id
  handler.id
end