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