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