Class: Elasticquery::Filters::Not

Inherits:
Base
  • Object
show all
Defined in:
lib/elasticquery/filters/not.rb

Instance Attribute Summary

Attributes inherited from Base

#params, #query

Instance Method Summary collapse

Methods inherited from Base

#build, build, #filterable?, filtered

Constructor Details

#initialize(condition = {}) ⇒ Not

Returns a new instance of Not.



7
8
9
# File 'lib/elasticquery/filters/not.rb', line 7

def initialize(condition = {})
  @condition = condition
end

Instance Method Details

#dup_with(*args) ⇒ Object

Raises:

  • (StandardError)


11
12
13
# File 'lib/elasticquery/filters/not.rb', line 11

def dup_with(*args)
  raise StandardError, 'Cannot use Filters::Not twice'
end

#to_hashObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/elasticquery/filters/not.rb', line 15

def to_hash
  condition = @condition
  -> do
    filter = filters.last.dup_with condition
    if filter.valid?
      subquery = filter.to_hash
      q = subquery[:query][:filtered][:filter][:and]
      {query: {filtered: {filter: {and: {not: {filter: q}}}}}}
    else
      {}
    end
  end
end