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