module DumbSerializer::Loadable

Public Instance Methods

all() click to toggle source
# File lib/dumb_serializer/loadable.rb, line 9
def all
  docs = MongoConnector.client[collection_name].find.to_a
  docs.each_with_object([]) do |doc, array|
    array << doc_to_object(doc)
  end
end
find(id) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 4
def find(id)
  doc = find_in_db(id) # handle error on no result!
  doc_to_object(doc)
end

Private Instance Methods

build(partial) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 27
def build(partial)
  return partial if CORE_TYPES.include?(partial.class)
  return partial.to_h if hash?(partial)
  partial['dd_vars'].each { |name, value| partial['dd_vars'][name] = build(value) }
  klass = class_get(partial['dd_class'])
  build_partial(klass, partial['dd_vars'])
end
build_partial(klass, vars) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 35
def build_partial(klass, vars)
  vars.each_with_object(klass.new) do |(key, value), partial|
    partial.instance_variable_set("@#{key}".to_sym, value)
  end
end
class_get(str) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 45
def class_get(str)
  Object.const_get(str)
end
collection_name() click to toggle source
# File lib/dumb_serializer/loadable.rb, line 49
def collection_name
  to_s
end
doc_to_object(doc) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 23
def doc_to_object(doc)
  build(doc)
end
find_in_db(id) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 18
def find_in_db(id)
  collection = MongoConnector.client[collection_name]
  collection.find(_id: BSON::ObjectId(id)).to_a.first
end
hash?(object) click to toggle source
# File lib/dumb_serializer/loadable.rb, line 41
def hash?(object)
  object.instance_of?(BSON::Document) && !object['dd_class']
end