Class: Neo4j::Label
- Inherits:
-
Object
show all
- Defined in:
- lib/neo4j/label.rb,
lib/neo4j-server/label.rb,
lib/neo4j-embedded/label.rb
Overview
A label is a named graph construct that is used to group nodes. See Neo4j::Node how to create and delete nodes
Defined Under Namespace
Classes: InvalidQueryError
Constant Summary
collapse
- INDEX_PATH =
'/db/data/schema/index/'
- CONSTRAINT_PATH =
'/db/data/schema/constraint/'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.constraint?(label, property) ⇒ Boolean
8
9
10
11
|
# File 'lib/neo4j-server/label.rb', line 8
def constraint?(label_name, property, session = Neo4j::Session.current)
label_constraints = session.connection.get("#{CONSTRAINT_PATH}/#{label_name}").body
!label_constraints.select { |c| c[:label] == label_name.to_s && c[:property_keys].first == property.to_s }.empty?
end
|
.create(name, session = Neo4j::Session.current) ⇒ Object
Returns a label of given name that can be used to specifying constraints
75
76
77
|
# File 'lib/neo4j/label.rb', line 75
def create(name, session = Neo4j::Session.current)
session.create_label(name)
end
|
.drop_all_constraints ⇒ Object
33
34
35
36
37
|
# File 'lib/neo4j-server/label.rb', line 33
def drop_all_constraints(session = Neo4j::Session.current)
constraints.each do |c|
session._query_or_fail("DROP CONSTRAINT ON (n:`#{c[:label]}`) ASSERT n.`#{c[:property_keys].first}` IS UNIQUE")
end
end
|
.drop_all_indexes ⇒ Object
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/neo4j-server/label.rb', line 22
def drop_all_indexes(session = Neo4j::Session.current)
indexes.each do |i|
begin
session._query_or_fail("DROP INDEX ON :`#{i[:label]}`(#{i[:property_keys].first})")
rescue Neo4j::Server::CypherResponse::ResponseError
next
end
end
end
|
.find_all_nodes(label_name, session = Neo4j::Session.current) ⇒ Enumerable<Neo4j::Node>
Returns all nodes having given label. Nodes can be wrapped in your own model ruby classes.
80
81
82
|
# File 'lib/neo4j/label.rb', line 80
def find_all_nodes(label_name, session = Neo4j::Session.current)
session.find_all_nodes(label_name)
end
|
.find_nodes(label_name, key, value, session = Neo4j::Session.current) ⇒ Enumerable<Neo4j::Node>
Returns all nodes having given label and properties. Nodes can be wrapped in your own model ruby classes.
85
86
87
|
# File 'lib/neo4j/label.rb', line 85
def find_nodes(label_name, key, value, session = Neo4j::Session.current)
session.find_nodes(label_name, key, value)
end
|
.index?(label, property) ⇒ Boolean
17
18
19
20
|
# File 'lib/neo4j-server/label.rb', line 17
def index?(label_name, property, session = Neo4j::Session.current)
label_indexes = session.connection.get("#{INDEX_PATH}/#{label_name}").body
!label_indexes.select { |i| i[:label] == label_name.to_s && i[:property_keys].first == property.to_s }.empty?
end
|
Instance Method Details
#create_constraint(property, constraints, session = Neo4j::Session.current) ⇒ Object
35
36
37
38
39
40
41
42
43
|
# File 'lib/neo4j/label.rb', line 35
def create_constraint(property, constraints, session = Neo4j::Session.current)
cypher = case constraints[:type]
when :unique
"CREATE CONSTRAINT ON (n:`#{name}`) ASSERT n.`#{property}` IS UNIQUE"
else
fail "Not supported constrain #{constraints.inspect} for property #{property} (expected :type => :unique)"
end
session._query_or_fail(cypher)
end
|
#create_index(*properties) ⇒ Object
14
15
16
|
# File 'lib/neo4j/label.rb', line 14
def create_index(*properties)
fail 'not implemented'
end
|
#drop_constraint(property, constraint, session = Neo4j::Session.current) ⇒ Object
52
53
54
55
56
57
58
59
60
|
# File 'lib/neo4j/label.rb', line 52
def drop_constraint(property, constraint, session = Neo4j::Session.current)
cypher = case constraint[:type]
when :unique
"DROP CONSTRAINT ON (n:`#{name}`) ASSERT n.`#{property}` IS UNIQUE"
else
fail "Not supported constrain #{constraint.inspect}"
end
session._query_or_fail(cypher)
end
|
#drop_index(*properties) ⇒ Object
19
20
21
|
# File 'lib/neo4j/label.rb', line 19
def drop_index(*properties)
fail 'not implemented'
end
|
#indexes ⇒ Object
25
26
27
|
# File 'lib/neo4j/label.rb', line 25
def indexes
fail 'not implemented'
end
|
#name ⇒ Object
9
10
11
|
# File 'lib/neo4j/label.rb', line 9
def name
fail 'not implemented'
end
|