module ActiveGraph::Relationship::Persistence

Public Instance Methods

concurrent_increment!(attribute, by = 1) click to toggle source

Increments concurrently a numeric attribute by a centain amount @param [Symbol, String] attribute name of the attribute to increment @param [Integer, Float] by amount to increment

   # File lib/active_graph/relationship/persistence.rb
42 def concurrent_increment!(attribute, by = 1)
43   increment_by_query! query_as(:r), attribute, by, :r
44 end
create_method() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
91 def create_method
92   self.class.create_method
93 end
create_model() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
46 def create_model
47   validate_node_classes!
48   delete_has_one_rel
49   rel = _create_rel
50   return self unless rel.respond_to?(:properties)
51   init_on_load(rel, from_node, to_node, @type)
52   true
53 end
cypher_identifier() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
27 def cypher_identifier
28   @cypher_identifier || :rel
29 end
delete_has_one_rel() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
55 def delete_has_one_rel
56   to_node.delete_reverse_has_one_relationship(self, :in, from_node) if to_node.persisted?
57   from_node.delete_reverse_has_one_relationship(self, :out, to_node) if from_node.persisted?
58 end
from_node_identifier() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
11 def from_node_identifier
12   @from_node_identifier || :from_node
13 end
from_node_identifier=(id) click to toggle source
   # File lib/active_graph/relationship/persistence.rb
19 def from_node_identifier=(id)
20   @from_node_identifier = id.to_sym
21 end
query_as(var) click to toggle source
   # File lib/active_graph/relationship/persistence.rb
60 def query_as(var)
61   # This should query based on the nodes, not the rel neo_id, I think
62   # Also, picky point: Should the var be `n`?
63   self.class.query_as(neo_id, var)
64 end
save(*) click to toggle source
   # File lib/active_graph/relationship/persistence.rb
31 def save(*)
32   create_or_update
33 end
save!(*args) click to toggle source
   # File lib/active_graph/relationship/persistence.rb
35 def save!(*args)
36   save(*args) or fail(RelInvalidError, inspect) # rubocop:disable Style/AndOr
37 end
to_node_identifier() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
15 def to_node_identifier
16   @to_node_identifier || :to_node
17 end
to_node_identifier=(id) click to toggle source
   # File lib/active_graph/relationship/persistence.rb
23 def to_node_identifier=(id)
24   @to_node_identifier = id.to_sym
25 end

Private Instance Methods

_create_rel() click to toggle source
    # File lib/active_graph/relationship/persistence.rb
127 def _create_rel
128   factory = QueryFactory.new(from_node, to_node, self)
129   factory.build!
130   factory.unwrapped_rel
131 end
destroy_query() click to toggle source
   # File lib/active_graph/relationship/persistence.rb
97 def destroy_query
98   query_as(:r).delete(:r)
99 end
type_validation_error_message(node, type_class) click to toggle source
    # File lib/active_graph/relationship/persistence.rb
123 def type_validation_error_message(node, type_class)
124   "Node class was #{node.class} (#{node.class.object_id}), expected #{type_class} (#{type_class.object_id})"
125 end
valid_type?(type_object, node) click to toggle source
    # File lib/active_graph/relationship/persistence.rb
112 def valid_type?(type_object, node)
113   case type_object
114   when false, :any
115     true
116   when Array
117     type_object.any? { |c| valid_type?(c, node) }
118   else
119     node.class.mapped_label_names.include?(type_object.to_s.constantize.mapped_label_name)
120   end
121 end
validate_node_classes!() click to toggle source
    # File lib/active_graph/relationship/persistence.rb
101 def validate_node_classes!
102   [from_node, to_node].each do |node|
103     type = from_node == node ? :_from_class : :_to_class
104     type_class = self.class.send(type)
105 
106     unless valid_type?(type_class, node)
107       fail ModelClassInvalidError, type_validation_error_message(node, type_class)
108     end
109   end
110 end