module Neo4j::Migrations::Schema

Public Class Methods

fetch_schema_data(session) click to toggle source
  # File lib/neo4j/migrations/schema.rb
5 def fetch_schema_data(session)
6   {constraints: fetch_constraint_descriptions(session).sort,
7    indexes: fetch_index_descriptions(session).sort}
8 end
synchronize_schema_data(session, schema_data, remove_missing) click to toggle source
   # File lib/neo4j/migrations/schema.rb
10 def synchronize_schema_data(session, schema_data, remove_missing)
11   queries = []
12   queries += drop_and_create_queries(fetch_constraint_descriptions(session), schema_data[:constraints], remove_missing)
13   queries += drop_and_create_queries(fetch_index_descriptions(session), schema_data[:indexes], remove_missing)
14   session.queries do
15     queries.each { |query| append query }
16   end
17 end

Private Class Methods

drop_and_create_queries(existing, specified, remove_missing) click to toggle source
   # File lib/neo4j/migrations/schema.rb
32 def drop_and_create_queries(existing, specified, remove_missing)
33   [].tap do |queries|
34     if remove_missing
35       (existing - specified).each { |description| queries << "DROP #{description}" }
36     end
37 
38     (specified - existing).each { |description| queries << "CREATE #{description}" }
39   end
40 end
fetch_constraint_descriptions(session) click to toggle source
   # File lib/neo4j/migrations/schema.rb
21 def fetch_constraint_descriptions(session)
22   session.query('CALL db.constraints()').map(&:description)
23 end
fetch_index_descriptions(session) click to toggle source
   # File lib/neo4j/migrations/schema.rb
25 def fetch_index_descriptions(session)
26   session.query('CALL db.indexes()').reject do |row|
27     # These indexes are created automagically when the corresponding constraints are created
28     row.type == 'node_unique_property'
29   end.map(&:description)
30 end