Module: Flex::Result::SearchLoader
- Defined in:
- lib/flex/result/search_loader.rb
Class Method Summary collapse
-
.extended(result) ⇒ Object
extend the collection on extend.
-
.should_extend?(result) ⇒ Boolean
extend if result is a Search or MultiGet.
Instance Method Summary collapse
Class Method Details
.extended(result) ⇒ Object
extend the collection on extend
11 12 13 |
# File 'lib/flex/result/search_loader.rb', line 11 def self.extended(result) result.collection.each { |h| h.extend(DocumentLoader) } end |
.should_extend?(result) ⇒ Boolean
extend if result is a Search or MultiGet
6 7 8 |
# File 'lib/flex/result/search_loader.rb', line 6 def self.should_extend?(result) result.is_a?(Search) || result.is_a?(MultiGet) end |
Instance Method Details
#loaded_collection ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/flex/result/search_loader.rb', line 15 def loaded_collection @loaded_collection ||= begin records = [] # returns a structure like {Comment=>[{"_id"=>"123", ...}, {...}], BlogPost=>[...]} h = Utils.group_array_by(collection) do |d| d.model_class end h.each do |klass, docs| records |= klass.find(docs.map(&:_id)) end class_ids = collection.map { |d| [d.model_class.to_s, d._id] } # Reorder records to preserve order from search results records = class_ids.map do |class_str, id| records.detect do |record| record.class.to_s == class_str && record.id.to_s == id.to_s end end records.extend Struct::Paginable records.setup(collection.total_entries, variables) records end end |