Class: Cyrel::Pattern::Node
- Inherits:
-
Object
- Object
- Cyrel::Pattern::Node
- Includes:
- ActiveModel::Attributes, ActiveModel::Model, Cyrel::Parameterizable
- Defined in:
- lib/cyrel/pattern/node.rb
Instance Method Summary collapse
-
#as(new_alias) ⇒ Object
—————————————————————— Public: return a copy of this Node with a different alias.
- #freeze ⇒ Object
-
#initialize(alias_name, labels: nil, or_labels: nil, properties: {}, **kw) ⇒ Node
constructor
A new instance of Node.
- #render(query) ⇒ Object
Constructor Details
#initialize(alias_name, labels: nil, or_labels: nil, properties: {}, **kw) ⇒ Node
Returns a new instance of Node.
20 21 22 23 24 25 26 27 |
# File 'lib/cyrel/pattern/node.rb', line 20 def initialize(alias_name, labels: nil, or_labels: nil, properties: {}, **kw) super( { alias_name: alias_name, labels: Array(labels).compact.flatten, or_labels: Array(or_labels).compact.flatten, properties: properties }.merge(kw) ) end |
Instance Method Details
#as(new_alias) ⇒ Object
37 38 39 |
# File 'lib/cyrel/pattern/node.rb', line 37 def as(new_alias) dup_with(alias_name: new_alias.to_sym) end |
#freeze ⇒ Object
69 70 71 72 73 74 |
# File 'lib/cyrel/pattern/node.rb', line 69 def freeze super labels.freeze or_labels.freeze properties.freeze end |
#render(query) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/cyrel/pattern/node.rb', line 41 def render(query) base = +"(#{alias_name}" # OR labels take precedence (Memgraph 3.2+: n:Label1|Label2) if or_labels.any? base << ':' << or_labels.join('|') elsif labels.any? base << ':' << labels.join(':') end unless properties.empty? params = properties.with_indifferent_access formatted = params.map do |k, v| # Let register_parameter handle loop variable detection param_key = query.register_parameter(v) if param_key.is_a?(Symbol) && param_key == v # Loop variable returned as-is, don't parameterize "#{k}: #{v}" else # Normal parameter key returned "#{k}: $#{param_key}" end end.join(', ') base << " {#{formatted}}" end base << ')' end |