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