class Neo4j::Core::QueryClauses::WhereClause

Constants

ARG_HAS_QUESTION_MARK_REGEX
KEYWORD
PAREN_SURROUND_REGEX

Public Class Methods

clause_join() click to toggle source
    # File lib/neo4j/core/query_clauses.rb
285 def clause_join
286   Clause::AND
287 end
clause_strings(clauses) click to toggle source
    # File lib/neo4j/core/query_clauses.rb
277 def clause_strings(clauses)
278   clauses.flat_map do |clause|
279     Array(clause.value).map do |v|
280       (clause.options[:not] ? 'NOT' : '') + (v.to_s.match(PAREN_SURROUND_REGEX) ? v.to_s : "(#{v})")
281     end
282   end
283 end

Private Class Methods

from_args(args, params, options = {}) click to toggle source
    # File lib/neo4j/core/query_clauses.rb
317 def from_args(args, params, options = {})
318   query_string, params_arg = args
319 
320   if query_string.is_a?(String) && (query_string.match(ARG_HAS_QUESTION_MARK_REGEX) || params_arg.is_a?(Hash))
321     if params_arg.is_a?(Hash)
322       params.add_params(params_arg)
323     else
324       param_var = params.add_params(question_mark_param: params_arg)[0]
325       query_string = query_string.gsub(ARG_HAS_QUESTION_MARK_REGEX, "\\1{#{param_var}}\\2")
326     end
327 
328     [from_arg(query_string, params, options)]
329   else
330     super
331   end
332 end

Public Instance Methods

from_key_and_value(key, value, previous_keys = []) click to toggle source
    # File lib/neo4j/core/query_clauses.rb
266 def from_key_and_value(key, value, previous_keys = [])
267   case value
268   when Hash then hash_key_value_string(key, value, previous_keys)
269   when NilClass then "#{key} IS NULL"
270   when Regexp then regexp_key_value_string(key, value, previous_keys)
271   else
272     key_value_string(key, value, previous_keys)
273   end
274 end

Private Instance Methods

hash_key_value_string(key, value, previous_keys) click to toggle source
    # File lib/neo4j/core/query_clauses.rb
292 def hash_key_value_string(key, value, previous_keys)
293   value.map do |k, v|
294     if k.to_sym == :neo_id
295       v = Array(v).map { |item| (item.respond_to?(:neo_id) ? item.neo_id : item).to_i }
296       key_value_string("ID(#{key})", v)
297     else
298       "#{key}.#{from_key_and_value(k, v, previous_keys + [key])}"
299     end
300   end.join(AND)
301 end
regexp_key_value_string(key, value, previous_keys) click to toggle source
    # File lib/neo4j/core/query_clauses.rb
303 def regexp_key_value_string(key, value, previous_keys)
304   pattern = (value.casefold? ? '(?i)' : '') + value.source
305 
306   param = [previous_keys + [key]].join(UNDERSCORE)
307   self.class.paramaterize_key!(param)
308 
309   param = add_param(param, pattern)
310 
311   "#{key} =~ {#{param}}"
312 end