class Chewie::Handler::Reduced
Attributes
built_query[R]
clause[R]
clause_or_query[R]
context[R]
query[R]
Public Class Methods
new(context:, handler: {}, filters: {})
click to toggle source
# File lib/chewie/handler/reduced.rb, line 10 def initialize(context:, handler: {}, filters: {}) @context = context @query = handler[:query] @clause = handler[:clause] @built_query = build_query(handler, filters) @clause_or_query = (@clause || @query) end
Public Instance Methods
reduce_with(handlers, hash)
click to toggle source
# File lib/chewie/handler/reduced.rb, line 18 def reduce_with(handlers, hash) has_one = handlers[query].one? if has_one && is_top_level_query set_in_hash(hash) else push_to_array(hash) end end
Private Instance Methods
build_query(handler, filters)
click to toggle source
# File lib/chewie/handler/reduced.rb, line 44 def build_query(handler, filters) query_type = handler[:query_type] case query_type when :term_level ::Chewie::Query::TermLevel.new(handler, filters).build when :bool ::Chewie::Query::Bool.new(handler, filters).build when :full_text ::Chewie::Query::FullText.new(handler, filters).build else raise "Could not build a query for type: #{query_type}" end end
is_top_level_query()
click to toggle source
# File lib/chewie/handler/reduced.rb, line 40 def is_top_level_query !(context == :bool && clause.present?) end
push_to_array(hash)
click to toggle source
# File lib/chewie/handler/reduced.rb, line 35 def push_to_array(hash) hash[clause_or_query] = (hash[clause_or_query] || []).push(built_query) end
set_in_hash(hash)
click to toggle source
# File lib/chewie/handler/reduced.rb, line 30 def set_in_hash(hash) hash[clause_or_query] = (hash[clause_or_query] || {}).merge(built_query) end