Module: Legion::Extensions::Neo4j::Runners::Indexes

Includes:
Helpers::Lex, Helpers::Client
Included in:
Client
Defined in:
lib/legion/extensions/neo4j/runners/indexes.rb

Instance Method Summary collapse

Methods included from Helpers::Client

#connection, #execute_cypher

Instance Method Details

#create_existence_constraint(label:, property:, name: nil, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



63
64
65
66
67
68
69
70
71
72
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 63

def create_existence_constraint(label:, property:, name: nil, database: 'neo4j', url: nil, username: nil,
                                password: nil, read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  cypher = 'CREATE CONSTRAINT'
  cypher += " #{name}" if name
  cypher += " FOR (n:#{label}) REQUIRE n.#{property} IS NOT NULL"
  execute_cypher(cypher, parameters: {}, database: database,
                        url: url, username: username, password: password)
end

#create_fulltext_index(name:, labels:, properties:, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



29
30
31
32
33
34
35
36
37
38
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 29

def create_fulltext_index(name:, labels:, properties:, database: 'neo4j', url: nil, username: nil,
                          password: nil, read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  label_list = Array(labels).map { |l| "'#{l}'" }.join(', ')
  prop_list = Array(properties).map { |p| "'#{p}'" }.join(', ')
  cypher = "CREATE FULLTEXT INDEX #{name} FOR (n:#{label_list}) ON EACH [#{prop_list}]"
  execute_cypher(cypher, parameters: {}, database: database,
                        url: url, username: username, password: password)
end

#create_index(label:, properties:, name: nil, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 17

def create_index(label:, properties:, name: nil, database: 'neo4j', url: nil, username: nil, password: nil,
                 read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  props = Array(properties).map { |p| "n.#{p}" }.join(', ')
  cypher = 'CREATE INDEX'
  cypher += " #{name}" if name
  cypher += " FOR (n:#{label}) ON (#{props})"
  execute_cypher(cypher, parameters: {}, database: database,
                        url: url, username: username, password: password)
end

#create_uniqueness_constraint(label:, property:, name: nil, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



52
53
54
55
56
57
58
59
60
61
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 52

def create_uniqueness_constraint(label:, property:, name: nil, database: 'neo4j', url: nil, username: nil,
                                 password: nil, read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  cypher = 'CREATE CONSTRAINT'
  cypher += " #{name}" if name
  cypher += " FOR (n:#{label}) REQUIRE n.#{property} IS UNIQUE"
  execute_cypher(cypher, parameters: {}, database: database,
                        url: url, username: username, password: password)
end

#drop_constraint(name:, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



74
75
76
77
78
79
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 74

def drop_constraint(name:, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  execute_cypher("DROP CONSTRAINT #{name} IF EXISTS", parameters: {}, database: database,
                                                     url: url, username: username, password: password)
end

#drop_index(name:, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false) ⇒ Object

Raises:



40
41
42
43
44
45
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 40

def drop_index(name:, database: 'neo4j', url: nil, username: nil, password: nil, read_only: false, **)
  raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only

  execute_cypher("DROP INDEX #{name} IF EXISTS", parameters: {}, database: database,
                                                url: url, username: username, password: password)
end

#list_constraints(database: 'neo4j', url: nil, username: nil, password: nil) ⇒ Object



47
48
49
50
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 47

def list_constraints(database: 'neo4j', url: nil, username: nil, password: nil, **)
  execute_cypher('SHOW CONSTRAINTS', parameters: {}, database: database,
                                    url: url, username: username, password: password)
end

#list_indexes(database: 'neo4j', url: nil, username: nil, password: nil) ⇒ Object



12
13
14
15
# File 'lib/legion/extensions/neo4j/runners/indexes.rb', line 12

def list_indexes(database: 'neo4j', url: nil, username: nil, password: nil, **)
  execute_cypher('SHOW INDEXES', parameters: {}, database: database,
                                url: url, username: username, password: password)
end