# File lib/couchdb_to_sql/document_handler.rb, line 46 def primary_keys [] end
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
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