Module: Workarea::Search::CategorizationFiltering

Included in:
Categorization, CategoryBrowse
Defined in:
app/queries/workarea/search/categorization_filtering.rb

Overview

TODO: v4 - use ProductRulesFiltering and refactor category_ids to separate module.

Instance Method Summary collapse

Instance Method Details

#category_filtersObject



10
11
12
# File 'app/queries/workarea/search/categorization_filtering.rb', line 10

def category_filters
  @category_filters ||= ProductRules.new(params[:rules]).to_a
end

#category_idsObject



6
7
8
# File 'app/queries/workarea/search/categorization_filtering.rb', line 6

def category_ids
  Array(params[:category_ids]).map(&:to_s)
end

#category_query_clausesObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/queries/workarea/search/categorization_filtering.rb', line 14

def category_query_clauses
  return [] if category_filters.blank? && category_ids.blank?

  results = []

  if category_filters.blank?
    results << { terms: { 'facets.category_id' => category_ids } }
  elsif category_ids.blank?
    results.push(*category_filters)
  else
    results.push(
      bool: {
        should: [
          { terms: { 'facets.category_id' => category_ids } },
          { bool: { must: category_filters } }
        ]
      }
    )
  end

  results
end