class QuerySyntax::Query
Attributes
ignore_failure[RW]
index[R]
Public Class Methods
new(index)
click to toggle source
Calls superclass method
# File lib/query_syntax/query.rb, line 6 def initialize(index) super "AND" @index = index @ignore_failure = true end
Public Instance Methods
and(args={})
click to toggle source
# File lib/query_syntax/query.rb, line 39 def and(args={}) scope = spawn("AND") scope.and!(args) end
each(&block)
click to toggle source
# File lib/query_syntax/query.rb, line 75 def each(&block) search(&block) end
encode()
click to toggle source
Search related methods
# File lib/query_syntax/query.rb, line 52 def encode URI.escape(to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) end
not(args={})
click to toggle source
# File lib/query_syntax/query.rb, line 34 def not(args={}) scope = spawn("NOT") scope.not!(args) end
or(args={})
click to toggle source
# File lib/query_syntax/query.rb, line 44 def or(args={}) scope = spawn("OR") scope.or!(args) end
partial(keys, &block)
click to toggle source
# File lib/query_syntax/query.rb, line 70 def partial(keys, &block) keys = Hash[keys.map { |k,v| [k,Array(v)] }] search(filter_result: keys, &block) end
search(*args, &block)
click to toggle source
# File lib/query_syntax/query.rb, line 56 def search(*args, &block) begin Chef::Search::Query.new.search(index, encode, args, &block) rescue Net::HTTPServerException => e error = Chef::JSONCompat.from_json(e.response.body)["error"].first Chef::Log.error("Search failed with : #{error}") if @ignore_failure then Array.new else raise Net::HTTPServerException end end end
spawn(operator="AND")
click to toggle source
Spawn! returns a clone to continue processing without mucking self
# File lib/query_syntax/query.rb, line 18 def spawn(operator="AND") scope = clone scope.scopes = scopes.clone scope.scope!(operator) scope end
where(args={})
click to toggle source
Spawn a new scopes
# File lib/query_syntax/query.rb, line 29 def where(args={}) scope = spawn("AND") scope.where!(args) if args end