Sha256: 4bebb436b3a61dbe7687afc7e96d8d0afeeb5978197db3914344f3cbe369e1ee

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

module Gummi
  module DbLayer
    module Document
      module Search
        class Filtered
          include Gummi::DbLayer::Document::Search::Searching

          attribute :query_string,  Gummi::DbLayer::Fields::SanitizedString
          attribute :query_filters, Array[Hash], default: []
          attribute :facets,        Hash,        default: {}
          attribute :sort,          Hash,        default: {}

          def to_client_args
            args = super
            args[:body] = { query: filtered, facets: facets }
            args[:body].merge!(sort: sort) if sort.present?
            args
          end

          def query
            if query_string.present?
              {query_string: { query: query_string}}
            else
              {match_all: {}}
            end
          end

          def filtered
            { 'filtered' => { 'query' => query, 'filter' => process_query_filters }}
          end

          def process_query_filters
            if query_filters.length > 1
              {and: query_filters}
            else
              query_filters.first
            end
          end

        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gummi-0.3.1 lib/gummi/db_layer/document/search/filtered.rb
gummi-0.3.0 lib/gummi/db_layer/document/search/filtered.rb
gummi-0.2.3 lib/gummi/db_layer/document/search/filtered.rb