Sha256: 064d759dfd2d63f9988640bb42775c2f42642ab215fa100a57161906c0f3856e

Contents?: true

Size: 1.65 KB

Versions: 15

Compression:

Stored size: 1.65 KB

Contents

module Gummi
  module RepositoryLayer
    module Repository
      class Result

        attr_reader :took

        def initialize(search_result, converter)
          @success       = search_result.success?
          @search_result = search_result
          @took          = @search_result.took      if @search_result
          @documents     = @search_result.documents if @search_result
          @converter     = converter
        end

        def facets
          return unless search_result.facets
          @facets ||= begin
            result = {}
            search_result.facets.each do |(name, content)|
              case content['_type']
              when 'terms'
                result[name] = Hash[content.terms.map(&:values)]
              when 'statistical'
                content.each do |k, v|
                  result[k] = v
                end
              end
            end
            Hashie::Mash.new result
          end
        end

        def records
          @records ||= begin
            # Passing through the Leaflet Collection, but converting the records.
            documents.map! { |document| converter.db_instance_to_entity(document) }
            documents
          end
        end

        def success?
          @success
        end

        # Leaflet::Collection has many methods we want to make use of.
        # E.g. kaminari and will_paginate support.
        # Also, we want to have Enumerable and #decorate at our fingertips.
        #
        def method_missing(method_name, *args)
          records.send method_name, *args
        end

        private

        attr_reader :search_result, :converter, :documents

      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
gummi-1.0.10 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.9 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.8 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.7 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.6 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.5 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.4 lib/gummi/repository_layer/repository/result.rb
gummi-0.3.16 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.3 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.2 lib/gummi/repository_layer/repository/result.rb
gummi-1.0.0 lib/gummi/repository_layer/repository/result.rb
gummi-0.3.14 lib/gummi/repository_layer/repository/result.rb
gummi-0.3.13 lib/gummi/repository_layer/repository/result.rb
gummi-0.3.12 lib/gummi/repository_layer/repository/result.rb
gummi-0.3.11 lib/gummi/repository_layer/repository/result.rb