class ThingTank::FakeBase

a replacement database for characters

Public Class Methods

new(doc, character, add_dep = true) click to toggle source
# File lib/thingtank/fakebase.rb, line 4
def initialize(doc, character, add_dep = true)
  @db = doc.database
  @doc = doc
  @character = character
  @doc.dependencies.add_character(character) if add_dep
end

Public Instance Methods

_character_doc() click to toggle source
# File lib/thingtank/fakebase.rb, line 58
def _character_doc
  @doc
end
_doc() click to toggle source
# File lib/thingtank/fakebase.rb, line 62
def _doc
  @doc._root
end
delete_doc(*character_docs) click to toggle source
# File lib/thingtank/fakebase.rb, line 37
def delete_doc(*character_docs)    
  character_docs.each do |character_doc|
    # delete only the attributes from me that are no part of another character, since we will have different doc ids
    # for each doc we will need to identify the remaining attributes
    doc, save = (character_doc["_id"].nil? || character_doc["_id"] == @doc.id) ?
      [@doc, false] : 
      [@db.get(character_doc["_id"]), true]

    doc.delete_character(character_doc)
    doc.save if save # if all characters are from our doc, only save once: at the end
  end
  @doc.save if @doc.changed?
  result()
end
get(id=:doc_id) click to toggle source
# File lib/thingtank/fakebase.rb, line 52
def get(id=:doc_id)
  id = @doc.id if id == :doc_id
  doc = id == @doc.id ? @doc : @db.get(id)
  doc.get_character(@character, self)
end
is_a?(klass) click to toggle source
Calls superclass method
# File lib/thingtank/fakebase.rb, line 15
def is_a?(klass)
  return true if klass == CouchRest::Database
  super
end
method_missing(meth, *args) click to toggle source
# File lib/thingtank/fakebase.rb, line 11
def method_missing(meth, *args)
  raise "don't call #{self.class}: #{meth.inspect}(#{args.inspect})"
end
result(ok=true) click to toggle source
# File lib/thingtank/fakebase.rb, line 24
def result(ok=true)
  {"ok" => ok}
end
save_doc(character_doc) click to toggle source
# File lib/thingtank/fakebase.rb, line 28
def save_doc(character_doc)
  if character_doc.is_a? ThingTank # I dunno why this happens
    @doc.dependencies.refresh_parent()
  else
    @doc.save_character_attributes(character_doc) if character_doc.changed?
  end
  result
end
to_character(klass) click to toggle source
# File lib/thingtank/fakebase.rb, line 20
def to_character(klass)
  self.class.new(@doc, klass).get()
end