Class: Neo4j::Server::CypherRelationship
Constant Summary
collapse
- MARSHAL_INSTANCE_VARIABLES =
[:@rel_type, :@props, :@start_node_neo_id, :@end_node_neo_id, :@id]
PropertyValidator::VALID_PROPERTY_VALUE_CLASSES
Instance Attribute Summary collapse
Attributes included from Resource
#resource_data, #resource_url
Instance Method Summary
collapse
#persisted?
Methods included from Resource
#convert_from_json_value, #expect_response_code!, #handle_response_error!, #init_resource_data, #resource_headers, #resource_url_id, #response_exception, #wrap_resource
_load, #_other_node, create, #end_node, load, #other_node, #start_node
#marshal_dump, #marshal_load
#neo4j_obj, #wrapper
#[], #[]=
#valid_property?, #validate_property!
Constructor Details
Returns a new instance of CypherRelationship.
9
10
11
12
13
14
15
16
17
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 9
def initialize(session, value)
@session = session
@response_hash = value
@rel_type = @response_hash[:type]
@props = @response_hash[:data]
@start_node_neo_id = neo_id_integer(@response_hash[:start])
@end_node_neo_id = neo_id_integer(@response_hash[:end])
@id = @response_hash[:id]
end
|
Instance Attribute Details
#end_node_neo_id ⇒ Object
Returns the value of attribute end_node_neo_id.
42
43
44
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 42
def end_node_neo_id
@end_node_neo_id
end
|
#id ⇒ Object
Returns the value of attribute id.
24
25
26
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 24
def id
@id
end
|
#start_node_neo_id ⇒ Object
Returns the value of attribute start_node_neo_id.
40
41
42
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 40
def start_node_neo_id
@start_node_neo_id
end
|
Instance Method Details
#==(other) ⇒ Object
Also known as:
eql?
19
20
21
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 19
def ==(other)
other.class == self.class && other.neo_id == neo_id
end
|
#_end_node ⇒ Object
56
57
58
59
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 56
def _end_node
load_resource
@_end_node ||= Neo4j::Node._load(end_node_neo_id)
end
|
#_end_node_id ⇒ Object
48
49
50
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 48
def _end_node_id
@end_node_neo_id ||= get_node_id(:end)
end
|
#_start_node ⇒ Object
52
53
54
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 52
def _start_node
@_start_node ||= Neo4j::Node._load(start_node_neo_id)
end
|
#_start_node_id ⇒ Object
44
45
46
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 44
def _start_node_id
@start_node_neo_id ||= get_node_id(:start)
end
|
#del ⇒ Object
Also known as:
delete, destroy
115
116
117
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 115
def del
@session._query("#{match_start} DELETE n", neo_id: neo_id)
end
|
#exist? ⇒ Boolean
121
122
123
124
125
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 121
def exist?
response = @session._query("#{match_start} RETURN n", neo_id: neo_id)
(response.data.nil? || response.data.empty?) ? false : true
end
|
#get_node_id(direction) ⇒ Object
61
62
63
64
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 61
def get_node_id(direction)
load_resource
resource_url_id(resource_url(direction))
end
|
#get_property(key) ⇒ Object
66
67
68
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 66
def get_property(key)
@session._query_or_fail("#{match_start} RETURN n.`#{key}`", true, neo_id: neo_id)
end
|
#inspect ⇒ Object
30
31
32
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 30
def inspect
"CypherRelationship #{neo_id}"
end
|
#load_resource ⇒ Object
34
35
36
37
38
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 34
def load_resource
return if resource_data_present?
@resource_data = @session._query_or_fail("#{match_start} RETURN n", true, neo_id: neo_id) end
|
#neo_id ⇒ Object
26
27
28
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 26
def neo_id
id
end
|
#props ⇒ Hash<Symbol,Object>
Returns all properties of the relationship.
79
80
81
82
83
84
85
86
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 79
def props
if @props
@props
else
hash = @session._query_entity_data("#{match_start} RETURN n", nil, neo_id: neo_id)
@props = Hash[hash[:data].map { |k, v| [k, v] }]
end
end
|
#props=(properties) ⇒ Object
replace all properties with new properties
89
90
91
92
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 89
def props=(properties)
@session._query_or_fail("#{match_start} SET n = { props }", false, props: properties, neo_id: neo_id)
properties
end
|
#rel_type ⇒ Object
111
112
113
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 111
def rel_type
@rel_type.to_sym
end
|
#remove_property(key) ⇒ Object
74
75
76
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 74
def remove_property(key)
@session._query_or_fail("#{match_start} REMOVE n.`#{key}`", false, neo_id: neo_id)
end
|
#set_property(key, value) ⇒ Object
70
71
72
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 70
def set_property(key, value)
@session._query_or_fail("#{match_start} SET n.`#{key}` = {value}", false, value: value, neo_id: neo_id)
end
|
#update_props(properties) ⇒ Object
Updates the properties, keeps old properties
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/neo4j-server/cypher_relationship.rb', line 95
def update_props(properties)
return if properties.empty?
params = {}
q = "#{match_start} SET " + properties.keys.each_with_index.map do |k, _i|
param = k.to_s.tr_s('^a-zA-Z0-9', '_').gsub(/^_+|_+$/, '')
params[param] = properties[k]
"n.`#{k}`= {#{param}}"
end.join(',')
@session._query_or_fail(q, false, params.merge(neo_id: neo_id))
properties
end
|