module ActiveGraph::Core::Schema
Public Instance Methods
constraints()
click to toggle source
# File lib/active_graph/core/schema.rb 19 def constraints 20 result = query('CALL db.indexes()', {}, skip_instrumentation: true) 21 22 result.select(&method(v4?(result) ? :v4_filter : :v3_filter)).map do |row| 23 { type: :uniqueness, label: label(result, row), properties: properties(row) } 24 end 25 end
indexes()
click to toggle source
# File lib/active_graph/core/schema.rb 11 def indexes 12 result = query('CALL db.indexes()', {}, skip_instrumentation: true) 13 14 result.map do |row| 15 { type: row[:type].to_sym, label: label(result, row), properties: properties(row), state: row[:state].to_sym } 16 end 17 end
version()
click to toggle source
# File lib/active_graph/core/schema.rb 4 def version 5 result = query('CALL dbms.components()', {}, skip_instrumentation: true) 6 7 # BTW: community / enterprise could be retrieved via `result.first.edition` 8 result.first[:versions][0] 9 end
Private Instance Methods
label(result, row)
click to toggle source
# File lib/active_graph/core/schema.rb 37 def label(result, row) 38 if v34?(result) 39 row[:label] 40 else 41 (v4?(result) ? row[:labelsOrTypes] : row[:tokenNames]).first 42 end.to_sym 43 end
properties(row)
click to toggle source
# File lib/active_graph/core/schema.rb 55 def properties(row) 56 row[:properties].map(&:to_sym) 57 end
v34?(result)
click to toggle source
# File lib/active_graph/core/schema.rb 50 def v34?(result) 51 return @v34 unless @v34.nil? 52 @v34 = result.keys.include?(:label) 53 end
v3_filter(row)
click to toggle source
# File lib/active_graph/core/schema.rb 33 def v3_filter(row) 34 row[:type] == 'node_unique_property' 35 end
v4?(result)
click to toggle source
# File lib/active_graph/core/schema.rb 45 def v4?(result) 46 return @v4 unless @v4.nil? 47 @v4 = result.keys.include?(:labelsOrTypes) 48 end
v4_filter(row)
click to toggle source
# File lib/active_graph/core/schema.rb 29 def v4_filter(row) 30 row[:uniqueness] == 'UNIQUE' 31 end