Class: Neo4j::Embedded::EmbeddedSession
Defined Under Namespace
Classes: Error
Instance Attribute Summary collapse
Instance Method Summary
collapse
tx_methods
Methods inherited from Session
_listeners, _notify_listeners, add_listener, #auto_commit?, clear_listeners, create_session, current, current!, inspect, named, on_session_available, open, query, register, register_db, #running, set_current, unregister, user_agent_string, validate_session_num!
Constructor Details
#initialize(db_location, config = {}) ⇒ EmbeddedSession
Returns a new instance of EmbeddedSession.
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 19
def initialize(db_location, config = {})
@db_location = db_location
@auto_commit = !!config[:auto_commit]
@properties_file = config[:properties_file]
if config[:properties_map]
props = config[:properties_map].each_with_object({}) { |(k, v), m| m[k.to_s.to_java] = v.to_s.to_java }
@properties_map = java.util.HashMap.new(props)
end
Neo4j::Session.register(self)
end
|
Instance Attribute Details
#db_location ⇒ Object
Returns the value of attribute db_location.
14
15
16
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 14
def db_location
@db_location
end
|
#graph_db ⇒ Object
Returns the value of attribute graph_db.
14
15
16
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 14
def graph_db
@graph_db
end
|
#properties_file ⇒ Object
Returns the value of attribute properties_file.
14
15
16
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 14
def properties_file
@properties_file
end
|
#properties_map ⇒ Object
Returns the value of attribute properties_map.
14
15
16
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 14
def properties_map
@properties_map
end
|
Instance Method Details
#_load_node(neo_id) ⇒ Object
Same as load but does not return the node as a wrapped Ruby object.
98
99
100
101
102
103
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 98
def _load_node(neo_id)
return nil if neo_id.nil?
@graph_db.get_node_by_id(neo_id.to_i)
rescue Java::OrgNeo4jGraphdb.NotFoundException
nil
end
|
#_load_relationship(neo_id) ⇒ Object
110
111
112
113
114
115
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 110
def _load_relationship(neo_id)
return nil if neo_id.nil?
@graph_db.get_relationship_by_id(neo_id.to_i)
rescue Java::OrgNeo4jGraphdb.NotFoundException
nil
end
|
#_query(query, params = {}, options = {}) ⇒ Object
Performs a cypher query with given string. Remember that you should close the resource iterator.
140
141
142
143
144
145
146
147
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 140
def _query(query, params = {}, options = {})
ActiveSupport::Notifications.instrument('neo4j.cypher_query', context: options[:context] || 'CYPHER', cypher: query, params: params) do
@engine ||= Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(@graph_db)
@engine.execute(query, Neo4j::Core::HashWithIndifferentAccess.new(params))
end
rescue StandardError => e
raise Neo4j::Session::CypherError.new(e.message, e.class, 'cypher error')
end
|
#_query_or_fail(q) ⇒ Object
153
154
155
156
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 153
def _query_or_fail(q)
@engine ||= Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(@graph_db)
@engine.execute(q)
end
|
#close ⇒ Object
71
72
73
74
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 71
def close
super
shutdown
end
|
#create_label(name) ⇒ Object
87
88
89
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 87
def create_label(name)
EmbeddedLabel.new(self, name)
end
|
#create_node(properties = nil, labels = []) ⇒ Object
162
163
164
165
166
167
168
169
170
171
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 162
def create_node(properties = nil, labels = [])
if labels.empty?
@graph_db.create_node
else
labels = EmbeddedLabel.as_java(labels)
@graph_db.create_node(labels)
end.tap do |java_node|
properties.each_pair { |k, v| java_node[k] = v } if properties
end
end
|
#db_type ⇒ Object
30
31
32
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 30
def db_type
:embedded_db
end
|
#factory_class ⇒ Object
57
58
59
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 57
def factory_class
Java::OrgNeo4jTest::ImpermanentGraphDatabase
end
|
#find_all_nodes(label) ⇒ Object
128
129
130
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 128
def find_all_nodes(label)
EmbeddedLabel.new(self, label).find_nodes
end
|
#find_nodes(label, key, value) ⇒ Object
132
133
134
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 132
def find_nodes(label, key, value)
EmbeddedLabel.new(self, label).find_nodes(key, value)
end
|
#inspect ⇒ Object
34
35
36
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 34
def inspect
"#{self.class} db_location: '#{@db_location}', running: #{running?}"
end
|
#load_node(neo_id) ⇒ Object
91
92
93
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 91
def load_node(neo_id)
_load_node(neo_id)
end
|
#load_relationship(neo_id) ⇒ Object
105
106
107
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 105
def load_relationship(neo_id)
_load_relationship(neo_id)
end
|
#query(*args) ⇒ Object
117
118
119
120
121
122
123
124
125
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 117
def query(*args)
if [[String], [String, Hash]].include?(args.map(&:class))
query, params = args[0, 2]
Neo4j::Embedded::ResultWrapper.new(_query(query, params), query)
else
options = args[0] || {}
Neo4j::Core::Query.new(options.merge(session: self))
end
end
|
#query_default_return(as) ⇒ Object
149
150
151
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 149
def query_default_return(as)
" RETURN #{as}"
end
|
#running? ⇒ Boolean
83
84
85
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 83
def running?
!!@graph_db
end
|
#search_result_to_enumerable(result) ⇒ Object
158
159
160
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 158
def search_result_to_enumerable(result)
result.map { |column| column['n'].wrapper }
end
|
#shutdown ⇒ Object
76
77
78
79
80
81
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 76
def shutdown
@graph_db && @graph_db.shutdown
Neo4j::Session.clear_listeners
@graph_db = nil
end
|
#start ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 44
def start
fail Error, 'Embedded Neo4j db is already running' if running?
puts "Start embedded Neo4j db at #{db_location}"
factory = Java::OrgNeo4jGraphdbFactory::GraphDatabaseFactory.new
db_service = factory.newEmbeddedDatabaseBuilder(db_location)
db_service.loadPropertiesFromFile(properties_file) if properties_file
db_service.setConfig(properties_map) if properties_map
@graph_db = db_service.newGraphDatabase
Neo4j::Session._notify_listeners(:session_available, self)
@engine = Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(@graph_db)
end
|
#version ⇒ Object
38
39
40
41
42
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 38
def version
version_string = @graph_db.to_java(Java::OrgNeo4jKernel::GraphDatabaseAPI).getDependencyResolver.resolveDependency(Java::OrgNeo4jKernel::KernelData.java_class).version.to_s
version_string.split(' ')[-1]
end
|