Module: Hypostasis::Document::Findable::ClassMethods
- Defined in:
- lib/hypostasis/document/findable.rb
Instance Method Summary collapse
Instance Method Details
#find(id) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/hypostasis/document/findable.rb', line 6 def find(id) fdb_key = nil namespace.transact do |tr| fdb_key = tr.get(namespace.for_document(self, id)) end raise Hypostasis::Errors::DocumentNotFound if fdb_key.nil? reconstitute_document(fdb_key.value, id) end |
#find_many(ids) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/hypostasis/document/findable.rb', line 29 def find_many(ids) results = [] namespace.transact do |tr| ids.each {|id| results << [tr.get(namespace.for_document(self, id)), id]} end results.collect! do |result| reconstitute_document(result[0], result[1]) end end |
#find_where(field_value_pairs) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/hypostasis/document/findable.rb', line 15 def find_where(field_value_pairs) results = [] namespace.transact do |tr| field_value_pairs.each do |field, value| results << tr.get_range_start_with(namespace.for_index(self, field, value), {:streaming_mode => :want_all}).to_a end end results.flatten! results.collect! {|result| Hypostasis::Tuple.unpack(result.key.split('\\').last).to_a.last }.compact! results.select! {|e| results.count(e) == field_value_pairs.size} results.uniq! find_many(results) end |