module Minidoc::Finders::ClassMethods

Public Instance Methods

all() click to toggle source
# File lib/minidoc/finders.rb, line 9
def all
  find({})
end
count(selector = {}) click to toggle source
# File lib/minidoc/finders.rb, line 17
def count(selector = {})
  collection.count(query: selector)
end
exists?(selector = {}) click to toggle source
# File lib/minidoc/finders.rb, line 21
def exists?(selector = {})
  find_one(selector).present?
end
find(id_or_selector, options = {}) click to toggle source
# File lib/minidoc/finders.rb, line 25
def find(id_or_selector, options = {})
  if id_or_selector.is_a?(Hash)
    options.merge!(transformer: method(:wrap))
    collection.find(id_or_selector, options)
  else
    raise ArgumentError unless options.empty?
    id = BSON::ObjectId(id_or_selector.to_s)
    wrap(collection.find_one(_id: id))
  end
end
find_one(selector = {}, options = {}) click to toggle source
# File lib/minidoc/finders.rb, line 36
def find_one(selector = {}, options = {})
  wrap(collection.find_one(selector, options))
end
find_one!(selector = {}, options = {}) click to toggle source
# File lib/minidoc/finders.rb, line 40
def find_one!(selector = {}, options = {})
  find_one(selector, options) or raise DocumentNotFoundError
end
find_one_or_initialize(attributes = {}, options = {}) click to toggle source
# File lib/minidoc/finders.rb, line 44
def find_one_or_initialize(attributes = {}, options = {})
  raise ArgumentError unless attributes.is_a?(Hash)
  find_one(attributes, options) || new(attributes)
end
first() click to toggle source
# File lib/minidoc/finders.rb, line 13
def first
  find_one({})
end

Private Instance Methods

from_db(attrs) click to toggle source
# File lib/minidoc/finders.rb, line 51
def from_db(attrs)
  doc = new(attrs)
  doc.instance_variable_set("@new_record", false)
  doc
end
wrap(doc) click to toggle source
# File lib/minidoc/finders.rb, line 57
def wrap(doc)
  return nil unless doc

  if doc.is_a?(Array) || doc.is_a?(Mongo::Cursor)
    doc.map { |d| from_db(d) }
  else
    from_db(doc)
  end
end