Module: ActiveGraph::Node::Persistence::ClassMethods
- Defined in:
- lib/active_graph/node/persistence.rb
Instance Method Summary collapse
-
#create(props = {}) ⇒ Object
Creates and saves a new node.
-
#create!(props = {}) ⇒ Object
Same as #create, but raises an error if there is a problem during save.
- #find_or_create(find_attributes, set_attributes = {}) ⇒ Object
-
#find_or_create_by(attributes, &block) ⇒ Object
Finds the first node with the given attributes, or calls create if none found.
-
#find_or_create_by!(attributes, &block) ⇒ Object
Same as #find_or_create_by, but calls #create! so it raises an error if there is a problem during save.
- #find_or_initialize_by(attributes) ⇒ Object
- #load_entity(id) ⇒ Object
- #merge(match_attributes, optional_attrs = {}) ⇒ Object
- #query_base_for(neo_id, var = :n) ⇒ Object
Instance Method Details
#create(props = {}) ⇒ Object
Creates and saves a new node
95 96 97 98 99 100 |
# File 'lib/active_graph/node/persistence.rb', line 95 def create(props = {}) new(props).tap do |obj| yield obj if block_given? obj.save end end |
#create!(props = {}) ⇒ Object
Same as #create, but raises an error if there is a problem during save.
103 104 105 106 107 108 |
# File 'lib/active_graph/node/persistence.rb', line 103 def create!(props = {}) new(props).tap do |o| yield o if block_given? o.save! end end |
#find_or_create(find_attributes, set_attributes = {}) ⇒ Object
124 125 126 127 128 129 130 |
# File 'lib/active_graph/node/persistence.rb', line 124 def find_or_create(find_attributes, set_attributes = {}) on_create_attributes = set_attributes.reverse_merge(find_attributes.merge(self.new(find_attributes).props_for_create)) new_query.merge(n: {self.mapped_label_names => find_attributes}) .on_create_set(n: on_create_attributes) .pluck(:n).first end |
#find_or_create_by(attributes, &block) ⇒ Object
Finds the first node with the given attributes, or calls create if none found
133 134 135 |
# File 'lib/active_graph/node/persistence.rb', line 133 def find_or_create_by(attributes, &block) find_by(attributes) || create(attributes, &block) end |
#find_or_create_by!(attributes, &block) ⇒ Object
Same as #find_or_create_by, but calls #create! so it raises an error if there is a problem during save.
138 139 140 |
# File 'lib/active_graph/node/persistence.rb', line 138 def find_or_create_by!(attributes, &block) find_by(attributes) || create!(attributes, &block) end |
#find_or_initialize_by(attributes) ⇒ Object
142 143 144 |
# File 'lib/active_graph/node/persistence.rb', line 142 def find_or_initialize_by(attributes) find_by(attributes) || new(attributes).tap { |o| yield(o) if block_given? } end |
#load_entity(id) ⇒ Object
146 147 148 149 150 |
# File 'lib/active_graph/node/persistence.rb', line 146 def load_entity(id) query = query_base_for(id, :n).return(:n) result = neo4j_query(query).first result && result[:n] end |
#merge(match_attributes, optional_attrs = {}) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/active_graph/node/persistence.rb', line 110 def merge(match_attributes, optional_attrs = {}) = [:on_create, :on_match, :set] optional_attrs.assert_valid_keys(*) optional_attrs.default = {} on_create_attrs, on_match_attrs, set_attrs = optional_attrs.values_at(*) new_query.merge(n: {self.mapped_label_names => match_attributes}) .on_create_set(on_create_clause(on_create_attrs)) .on_match_set(on_match_clause(on_match_attrs)) .break.set(n: set_attrs) .pluck(:n).first end |
#query_base_for(neo_id, var = :n) ⇒ Object
152 153 154 |
# File 'lib/active_graph/node/persistence.rb', line 152 def query_base_for(neo_id, var = :n) ActiveGraph::Base.new_query.match(var).where(var => {neo_id: neo_id}) end |