Module: ActiveGraph::Migrations::Helpers

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_graph/migrations/helpers.rb,
lib/active_graph/migrations/helpers/schema.rb,
lib/active_graph/migrations/helpers/id_property.rb,
lib/active_graph/migrations/helpers/relationships.rb

Defined Under Namespace

Modules: ClassMethods, IdProperty, Relationships, Schema

Constant Summary collapse

PROPERTY_ALREADY_DEFINED =
'Property `%{new_property}` is already defined in `%{label}`. '\
'To overwrite, call `remove_property(:%{label}, :%{new_property})` before this method.'.freeze

Instance Method Summary collapse

Instance Method Details

#add_label(label, new_label) ⇒ Object



29
30
31
# File 'lib/active_graph/migrations/helpers.rb', line 29

def add_label(label, new_label)
  add_labels(label, [new_label])
end

#add_labels(label, new_labels) ⇒ Object



25
26
27
# File 'lib/active_graph/migrations/helpers.rb', line 25

def add_labels(label, new_labels)
  by_label(label).set(n: new_labels).exec
end

#drop_nodes(label) ⇒ Object



19
20
21
22
23
# File 'lib/active_graph/migrations/helpers.rb', line 19

def drop_nodes(label)
  query.match(n: label)
       .optional_match('(n)-[r]-()')
       .delete(:r, :n).exec
end

#execute(string, params = {}) ⇒ Object



45
46
47
# File 'lib/active_graph/migrations/helpers.rb', line 45

def execute(string, params = {})
  ActiveGraph::Base.query(string, params).to_a
end

#query(*args) ⇒ Object



62
63
64
# File 'lib/active_graph/migrations/helpers.rb', line 62

def query(*args)
  ActiveGraph::Base.new_query(*args)
end

#remove_label(label, label_to_remove) ⇒ Object



37
38
39
# File 'lib/active_graph/migrations/helpers.rb', line 37

def remove_label(label, label_to_remove)
  remove_labels(label, [label_to_remove])
end

#remove_labels(label, labels_to_remove) ⇒ Object



33
34
35
# File 'lib/active_graph/migrations/helpers.rb', line 33

def remove_labels(label, labels_to_remove)
  by_label(label).remove(n: labels_to_remove).exec
end

#remove_property(label, property) ⇒ Object



9
10
11
# File 'lib/active_graph/migrations/helpers.rb', line 9

def remove_property(label, property)
  by_label(label).remove("n.#{property}").exec
end

#rename_label(old_label, new_label) ⇒ Object



41
42
43
# File 'lib/active_graph/migrations/helpers.rb', line 41

def rename_label(old_label, new_label)
  by_label(old_label).set(n: new_label).remove(n: old_label).exec
end

#rename_property(label, old_property, new_property) ⇒ Object



13
14
15
16
17
# File 'lib/active_graph/migrations/helpers.rb', line 13

def rename_property(label, old_property, new_property)
  fail ActiveGraph::MigrationError, format(PROPERTY_ALREADY_DEFINED, new_property: new_property, label: label) if property_exists?(label, new_property)
  by_label(label).set("n.#{new_property} = n.#{old_property}")
                 .remove("n.#{old_property}").exec
end

#say(message, subitem = false) ⇒ Object



58
59
60
# File 'lib/active_graph/migrations/helpers.rb', line 58

def say(message, subitem = false)
  output "#{subitem ? '   ->' : '--'} #{message}"
end

#say_with_time(message) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/active_graph/migrations/helpers.rb', line 49

def say_with_time(message)
  say(message)
  result = nil
  time = Benchmark.measure { result = yield }
  say format('%.4fs', time.real), :subitem
  say("#{result} rows", :subitem) if result.is_a?(Integer)
  result
end