class ActiveGraph::Core::QueryClauses::WhereClause
Constants
- ARG_HAS_QUESTION_MARK_REGEX
- KEYWORD
- PAREN_SURROUND_REGEX
Public Class Methods
clause_join()
click to toggle source
# File lib/active_graph/core/query_clauses.rb 283 def clause_join 284 Clause::AND 285 end
clause_strings(clauses)
click to toggle source
# File lib/active_graph/core/query_clauses.rb 275 def clause_strings(clauses) 276 clauses.flat_map do |clause| 277 Array(clause.value).map do |v| 278 (clause.options[:not] ? 'NOT' : '') + (v.to_s.match(PAREN_SURROUND_REGEX) ? v.to_s : "(#{v})") 279 end 280 end 281 end
Private Class Methods
from_args(args, params, options = {})
click to toggle source
Calls superclass method
ActiveGraph::Core::QueryClauses::Clause::from_args
# File lib/active_graph/core/query_clauses.rb 315 def from_args(args, params, options = {}) 316 query_string, params_arg = args 317 318 if query_string.is_a?(String) && (query_string.match(ARG_HAS_QUESTION_MARK_REGEX) || params_arg.is_a?(Hash)) 319 if params_arg.is_a?(Hash) 320 params.add_params(params_arg) 321 else 322 param_var = params.add_params(question_mark_param: params_arg)[0] 323 query_string = query_string.gsub(ARG_HAS_QUESTION_MARK_REGEX, "\\1$#{param_var}\\2") 324 end 325 326 [from_arg(query_string, params, options)] 327 else 328 super 329 end 330 end
Public Instance Methods
from_key_and_value(key, value, previous_keys = [])
click to toggle source
# File lib/active_graph/core/query_clauses.rb 264 def from_key_and_value(key, value, previous_keys = []) 265 case value 266 when Hash then hash_key_value_string(key, value, previous_keys) 267 when NilClass then "#{key} IS NULL" 268 when Regexp then regexp_key_value_string(key, value, previous_keys) 269 else 270 key_value_string(key, value, previous_keys) 271 end 272 end
Private Instance Methods
hash_key_value_string(key, value, previous_keys)
click to toggle source
# File lib/active_graph/core/query_clauses.rb 290 def hash_key_value_string(key, value, previous_keys) 291 value.map do |k, v| 292 if k.to_sym == :neo_id 293 v = Array(v).map { |item| (item.respond_to?(:neo_id) ? item.neo_id : item).to_i } 294 key_value_string("ID(#{key})", v) 295 else 296 "#{key}.#{from_key_and_value(k, v, previous_keys + [key])}" 297 end 298 end.join(AND) 299 end
regexp_key_value_string(key, value, previous_keys)
click to toggle source
# File lib/active_graph/core/query_clauses.rb 301 def regexp_key_value_string(key, value, previous_keys) 302 pattern = (value.casefold? ? '(?i)' : '') + value.source 303 304 param = [previous_keys + [key]].join(UNDERSCORE) 305 self.class.paramaterize_key!(param) 306 307 param = add_param(param, pattern) 308 309 "#{key} =~ $#{param}" 310 end