class CouchdbToSql::DocumentHandler

Handles document insertion, deletion and 'marking as deleted' operations.

This class delegates the actual insertion, deletion etc to the various `Table*` classes.

Attributes

changes[R]
document[RW]
filter[R]
mode[R]

Public Class Methods

new(changes, filter = {}, &block) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 13
def initialize(changes, filter = {}, &block)
  @changes  = changes
  @filter   = filter
  @_block   = block
  @mode     = nil
end

Public Instance Methods

database() click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 84
def database
  changes.database
end
delete(document) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 68
def delete(document)
  @mode = :delete
  self.document = document
  instance_eval(&@_block)
end
handler() click to toggle source

END DSL

# File lib/couchdb_to_sql/document_handler.rb, line 42
def handler
  self
end
handles?(doc) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 20
def handles?(doc)
  @filter.each do |k, v|
    return false if doc[k.to_s] != v
  end
  true
end
id() click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 54
def id
  document['_id']
end
insert(document) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 62
def insert(document)
  @mode = :insert
  self.document = document
  instance_eval(&@_block)
end
key_filter() click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 50
def key_filter
  {}
end
mark_as_deleted(document) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 74
def mark_as_deleted(document)
  @mode = :mark_as_deleted
  self.document = document
  instance_eval(&@_block)
end
primary_keys() click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 46
def primary_keys
  []
end
rev() click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 58
def rev
  document['_rev']
end
schema(name) click to toggle source
# File lib/couchdb_to_sql/document_handler.rb, line 80
def schema(name)
  changes.schema(name)
end
table(name, opts = {}, &block) click to toggle source

Handle a table definition.

# File lib/couchdb_to_sql/document_handler.rb, line 30
def table(name, opts = {}, &block)
  if @mode == :delete
    TableDestroyer.new(self, name, opts, &block).execute
  elsif @mode == :mark_as_deleted
    TableDeletedMarker.new(self, name, opts, &block).execute
  elsif @mode == :insert
    TableBuilder.new(self, name, opts, &block).execute
  end
end