Sha256: 65dc03c6ce2ba76c1148e2913f691b5f9036a67a00eefc546a8b153c18ce0fbf

Contents?: true

Size: 1.34 KB

Versions: 62

Compression:

Stored size: 1.34 KB

Contents

module Workarea
  module Search
    class StorefrontSearch
      class ProductMultipass
        include Middleware

        def last_pass?
          params[:pass] == ProductSearch::PASSES.last
        end

        def next_pass
          if params[:pass].blank?
            ProductSearch::PASSES.second
          else
            ProductSearch::PASSES.last
          end
        end

        def call(response, &traverse_chain)
          current_pass = response.query.response

          if sufficient_results?(current_pass)
            yield
          else
            pass_params = params.merge(pass: next_pass)
            new_pass = self.class.new(pass_params, customization)

            response.reset!(pass_params, by: self)
            new_pass.call(response, &traverse_chain)
          end
        end

        private

        def sufficient_results?(current_pass)
          valid_suggestion_from?(current_pass) ||
            last_pass? ||
              current_pass['hits']['total'] >=
                Workarea.config.search_sufficient_results
        end

        def valid_suggestion_from?(product_response)
          product_response['suggest'].present? &&
            product_response['suggest']['spelling_correction'].present? &&
            product_response['suggest']['spelling_correction'].first['options'].any?
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.15 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.36 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.14 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.35 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.13 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.34 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.12 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.33 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.11 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.10 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.32 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.9 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.31 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.8 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.30 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.7 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.29 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.6 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.4.28 app/queries/workarea/search/storefront_search/product_multipass.rb
workarea-core-3.5.5 app/queries/workarea/search/storefront_search/product_multipass.rb