Class: Elasticquery::Base

Inherits:
Object
  • Object
show all
Includes:
Queries::All
Defined in:
lib/elasticquery/base.rb

Direct Known Subclasses

Filters::Not

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Base

Create new query objects with built empty query.



52
53
54
55
# File 'lib/elasticquery/base.rb', line 52

def initialize(params = {})
  @params = params
  @query = Query.new
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



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

def params
  @params
end

#queryObject (readonly)

Returns the value of attribute query.



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

def query
  @query
end

Class Method Details

.build(params = {}) ⇒ Hash

Build elasticquery query using defined filters.

Examples:

query.build # => { query: { match_all: {} }

Returns:

  • (Hash)

    elasticqueriable hash

See Also:



76
77
78
# File 'lib/elasticquery/base.rb', line 76

def self.build(params = {})
  new(params).build
end

.filtered {|params| ... } ⇒ Object

Note:

Multiple filtered blocks can be defined.

Define params processor for es query.

Examples:

query builder for id

class PostQuery < Elasticquery::Base
  filtered do |params|
    term "id" => params[:id]
  end
end

Yields:

  • (params)

    Block with defined filters for passed yield param processing

Yield Parameters:

  • passed (Hash)

    params to processing



29
30
31
# File 'lib/elasticquery/base.rb', line 29

def self.filtered(&block)
  self.filters += [block]
end

Instance Method Details

#buildHash

Build elasticquery query using defined filters.

Examples:

query.build # => { query: { match_all: {} }

Returns:

  • (Hash)

    elasticqueriable hash



63
64
65
66
# File 'lib/elasticquery/base.rb', line 63

def build
  filters.each { |filter| instance_exec @params, &filter }
  query.to_hash
end

#filterable?Boolean

Is your object can process params to elasticqueriable.

Examples:

class EmptyQuery < Elasticquery::Base
end
EmptyQuery.new.filterable? #=> false
class PostQuery < Elasticquery::Base
  filtered { |params| true }
end
PostQuery.new.filterable? #=> true

Returns:

  • (Boolean)


47
48
49
# File 'lib/elasticquery/base.rb', line 47

def filterable?
  filters.any?
end