Class: Neo4j::Core::QueryClauses::WhereClause

Inherits:
Clause
  • Object
show all
Defined in:
lib/neo4j-core/query_clauses.rb

Constant Summary

Constants included from CypherTranslator

CypherTranslator::EMPTY_PROPS, CypherTranslator::SANITIZE_ESCAPED_REGEXP

Instance Attribute Summary

Attributes inherited from Clause

#params

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Clause

#attributes_from_key_and_value, from_args, #from_hash, #from_string, #initialize, #label_from_key_and_value, #node_from_key_and_value, to_cypher, #value, #var_from_key_and_value

Methods included from CypherTranslator

#create_escape_value, #cypher_prop_list, #cypher_string, #escape_quotes, #escape_value, #label_string, #prop_identifier, #sanitize_escape_sequences, sanitized_column_names, translate_response

Constructor Details

This class inherits a constructor from Neo4j::Core::QueryClauses::Clause

Class Method Details

.clause_string(clauses) ⇒ Object



211
212
213
# File 'lib/neo4j-core/query_clauses.rb', line 211

def clause_string(clauses)
  clauses.map(&:value).flatten.map {|value| "(#{value})" }.join(' AND ')
end

Instance Method Details

#from_key_and_value(key, value, previous_keys = []) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/neo4j-core/query_clauses.rb', line 186

def from_key_and_value(key, value, previous_keys = [])
  case value
  when Hash
    value.map do |k, v|
      if k.to_sym == :neo_id
        clause_id = "neo_id_#{v}"
        @params[clause_id] = v.to_i
        "ID(#{key}) = {#{clause_id}}"
      else
        "#{key}.#{from_key_and_value(k, v, previous_keys + [key])}"
      end
    end.join(' AND ')
  when NilClass
    "#{key} IS NULL"
  when Regexp
    pattern = (value.casefold? ? '(?i)' : '') + value.source
    "#{key} =~ #{escape_value(pattern.gsub(/\\/, '\\\\\\'))}"
  when Array
    key_value_string(key, value, previous_keys)
  else
    key_value_string(key, value, previous_keys)
  end
end