Class: Qiita::Elasticsearch::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/qiita/elasticsearch/query.rb

Instance Method Summary collapse

Constructor Details

#initialize(tokens, query_builder_options = nil) ⇒ Query

Returns a new instance of Query.

Parameters:

  • tokens (Array<Qiita::Elasticsearch::Token>)
  • query_builder_options (Hash) (defaults to: nil)

    For building new query from this query



10
11
12
13
# File 'lib/qiita/elasticsearch/query.rb', line 10

def initialize(tokens, query_builder_options = nil)
  @query_builder_options = query_builder_options
  @tokens = tokens
end

Instance Method Details

#append_field_token(field_name: nil, term: nil) ⇒ Qiita::Elasticsearch::Query

Examples:

query.append_field_token(field_name: “tag”, term: “Ruby”)

Parameters:

  • field_name (String) (defaults to: nil)
  • term (String) (defaults to: nil)

Returns:



19
20
21
# File 'lib/qiita/elasticsearch/query.rb', line 19

def append_field_token(field_name: nil, term: nil)
  build_query([*@tokens, "#{field_name}:#{term}"].join(" "))
end

#delete_field_token(field_name: nil, term: nil) ⇒ Qiita::Elasticsearch::Query

Examples:

query.delete_field_token(field_name: “tag”, term: “Ruby”)

Parameters:

  • field_name (String) (defaults to: nil)
  • term (String) (defaults to: nil)

Returns:



27
28
29
30
31
32
33
# File 'lib/qiita/elasticsearch/query.rb', line 27

def delete_field_token(field_name: nil, term: nil)
  build_query(
    @tokens.reject do |token|
      token.field_name == field_name && token.term == term
    end.join(" ")
  )
end

#has_field_token?(field_name: nil, term: nil) ⇒ Boolean

Examples:

query.has_field_token?(field_name: “tag”, term: “Ruby”)

Parameters:

  • field_name (String) (defaults to: nil)
  • term (String) (defaults to: nil)

Returns:

  • (Boolean)


38
39
40
41
42
# File 'lib/qiita/elasticsearch/query.rb', line 38

def has_field_token?(field_name: nil, term: nil)
  @tokens.any? do |token|
    token.field_name == field_name && token.term == term
  end
end

#to_hashHash

Examples:

query.to_hash

Returns:

  • (Hash)


46
47
48
49
50
51
52
# File 'lib/qiita/elasticsearch/query.rb', line 46

def to_hash
  if has_empty_tokens?
    Nodes::NullNode.new.to_hash
  else
    Nodes::OrSeparatableNode.new(@tokens).to_hash
  end
end

#to_sString

Returns query string generated from its tokens.

Returns:

  • (String)

    query string generated from its tokens



55
56
57
# File 'lib/qiita/elasticsearch/query.rb', line 55

def to_s
  @tokens.join(" ")
end

#update_field_token(field_name: nil, term: nil) ⇒ Qiita::Elasticsearch::Query

Examples:

query.update_field_token(field_name: “tag”, term: “Ruby”)

Parameters:

  • field_name (String) (defaults to: nil)
  • term (String) (defaults to: nil)

Returns:



63
64
65
66
67
68
69
# File 'lib/qiita/elasticsearch/query.rb', line 63

def update_field_token(field_name: nil, term: nil)
  build_query(
    @tokens.reject do |token|
      token.field_name == field_name
    end.map(&:to_s).push("#{field_name}:#{term}").join(" ")
  )
end