Module: Neomirror::Node
- Defined in:
- lib/neomirror/node.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #create_neo_node ⇒ Object
- #destroy_neo_node ⇒ Object
- #find_neo_node ⇒ Object
- #neo_node ⇒ Object (also: #node)
- #neo_node_properties ⇒ Object
- #update_neo_node ⇒ Object
Class Method Details
.included(base) ⇒ Object
2 3 4 5 6 7 |
# File 'lib/neomirror/node.rb', line 2 def self.included(base) base.extend(ClassMethods) base.after_create :create_neo_node if base.respond_to?(:after_create) base.after_update :update_neo_node if base.respond_to?(:after_update) base.after_destroy :destroy_neo_node if base.respond_to?(:after_destroy) end |
Instance Method Details
#create_neo_node ⇒ Object
54 55 56 57 58 59 |
# File 'lib/neomirror/node.rb', line 54 def create_neo_node return true unless self.class.neo_mirror @neo_node = ::Neography::Node.create(neo_node_properties, ::Neomirror.neo) ::Neomirror.neo.set_label(@neo_node, self.class.neo_mirror[:label]) @neo_node end |
#destroy_neo_node ⇒ Object
71 72 73 74 75 |
# File 'lib/neomirror/node.rb', line 71 def destroy_neo_node return true unless self.class.neo_mirror && find_neo_node ::Neomirror.neo.delete_node!(@neo_node) true end |
#find_neo_node ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/neomirror/node.rb', line 46 def find_neo_node raise "Couldn't find neo_node declaration" unless self.class.neo_mirror label = self.class.neo_mirror[:label] id = self.__send__(self.class.neo_primary_key) return nil unless node = ::Neomirror.neo.find_nodes_labeled(label, { :id => id }).first @neo_node = ::Neography::Node.load(node, ::Neomirror.neo) end |
#neo_node ⇒ Object Also known as: node
32 33 34 35 |
# File 'lib/neomirror/node.rb', line 32 def neo_node raise "Couldn't find neo_node declaration" unless self.class.neo_mirror find_neo_node || create_neo_node end |
#neo_node_properties ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/neomirror/node.rb', line 38 def neo_node_properties hash = { :id => self.__send__(self.class.neo_primary_key) } if self.class.neo_mirror && self.class.neo_mirror[:properties] self.class.neo_mirror[:properties].each { |property, rule| hash[property] = rule.call(self) } end hash end |
#update_neo_node ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/neomirror/node.rb', line 61 def update_neo_node return true unless self.class.neo_mirror if find_neo_node ::Neomirror.neo.reset_node_properties(@neo_node, neo_node_properties) if self.class.neo_mirror[:properties] true else create_neo_node end end |