class Skala::Adapter::Search::Request

Public Class Methods

facet_factory(value) click to toggle source
# File lib/skala/adapter/search/request.rb, line 78
def self.facet_factory(value)
  factory(:facet).call(value)
end
factory(postfix) click to toggle source

helpers to implement facets/queries setters

# File lib/skala/adapter/search/request.rb, line 66
def self.factory(postfix) # e.g. :facet or :query which turns to "#{type}_#{postfix}", e.g. "match_query" or "range_facet"
  -> (value) do
    class_name = "#{value[:type] || value["type"]}_#{postfix}".classify

    if const_defined?(class_name)
      const_get(class_name).new(value)
    else
      raise ArgumentError.new("Unknown #{postfix} type!")
    end
  end
end
query_factory(value) click to toggle source
# File lib/skala/adapter/search/request.rb, line 82
def self.query_factory(value)
  factory(:query).call(value)
end

Public Instance Methods

facet_queries=(value) click to toggle source

override (facet_)queries setters in order to determine query type

Calls superclass method
# File lib/skala/adapter/search/request.rb, line 43
def facet_queries=(value)
  if sanitized_value = [value].flatten(1).compact.presence
    mapped_values = sanitized_value.map do |_element|
      _element.is_a?(Hash) ? self.class.query_factory(_element) : _element
    end

    super(mapped_values)
  end
end
facets=(value) click to toggle source

override facet setter in order to determine facet type

Calls superclass method
# File lib/skala/adapter/search/request.rb, line 32
def facets=(value)
  if sanitized_value = [value].flatten(1).compact.presence
    mapped_values = sanitized_value.map do |_element|
      _element.is_a?(Hash) ? self.class.facet_factory(_element) : _element
    end

    super(mapped_values)
  end
end
queries=(value) click to toggle source
Calls superclass method
# File lib/skala/adapter/search/request.rb, line 53
def queries=(value)
  if sanitized_value = [value].flatten(1).compact.presence
    mapped_values = sanitized_value.map do |_element|
      _element.is_a?(Hash) ? self.class.query_factory(_element) : _element
    end

    super(mapped_values)
  end
end
to_param(*) click to toggle source

TODO: move to frontend

# File lib/skala/adapter/search/request.rb, line 87
def to_param(*)
  # binding.pry
  to_json
end