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.
18
19
20
21
22
23
24
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 18
def initialize(db_location, config = {})
@config = config
@db_location = db_location
@auto_commit = !!@config[:auto_commit]
@properties_file = @config[:properties_file]
Neo4j::Session.register(self)
end
|
Instance Attribute Details
#db_location ⇒ Object
Returns the value of attribute db_location.
13
14
15
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 13
def db_location
@db_location
end
|
#graph_db ⇒ Object
Returns the value of attribute graph_db.
13
14
15
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 13
def graph_db
@graph_db
end
|
#properties_file ⇒ Object
Returns the value of attribute properties_file.
13
14
15
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 13
def properties_file
@properties_file
end
|
#properties_map ⇒ Object
Returns the value of attribute properties_map.
13
14
15
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 13
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.
103
104
105
106
107
108
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 103
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
115
116
117
118
119
120
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 115
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.
145
146
147
148
149
150
151
152
153
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 145
def _query(query, params = {}, options = {})
ActiveSupport::Notifications.instrument('neo4j.cypher_query', params: params, context: options[:context],
cypher: query, pretty_cypher: options[:pretty_cypher], params: params) do
@engine ||= Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(@graph_db)
@engine.execute(query, HashWithIndifferentAccess.new(params))
end
rescue StandardError => e
raise Neo4j::Session::CypherError.new(e.message, e.class, 'cypher error')
end
|
#_query_or_fail(q) ⇒ Object
159
160
161
162
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 159
def _query_or_fail(q)
@engine ||= Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(@graph_db)
@engine.execute(q)
end
|
#close ⇒ Object
76
77
78
79
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 76
def close
super
shutdown
end
|
#create_label(name) ⇒ Object
92
93
94
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 92
def create_label(name)
EmbeddedLabel.new(self, name)
end
|
#create_node(properties = nil, labels = []) ⇒ Object
168
169
170
171
172
173
174
175
176
177
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 168
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
35
36
37
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 35
def db_type
:embedded_db
end
|
#factory_class ⇒ Object
62
63
64
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 62
def factory_class
Java::OrgNeo4jTest::ImpermanentGraphDatabase
end
|
#find_all_nodes(label) ⇒ Object
133
134
135
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 133
def find_all_nodes(label)
EmbeddedLabel.new(self, label).find_nodes
end
|
#find_nodes(label, key, value) ⇒ Object
137
138
139
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 137
def find_nodes(label, key, value)
EmbeddedLabel.new(self, label).find_nodes(key, value)
end
|
#inspect ⇒ Object
39
40
41
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 39
def inspect
"#{self.class} db_location: '#{@db_location}', running: #{running?}"
end
|
#load_node(neo_id) ⇒ Object
96
97
98
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 96
def load_node(neo_id)
_load_node(neo_id)
end
|
#load_relationship(neo_id) ⇒ Object
110
111
112
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 110
def load_relationship(neo_id)
_load_relationship(neo_id)
end
|
#query(*args) ⇒ Object
122
123
124
125
126
127
128
129
130
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 122
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
155
156
157
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 155
def query_default_return(as)
" RETURN #{as}"
end
|
#running? ⇒ Boolean
88
89
90
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 88
def running?
!!@graph_db
end
|
#search_result_to_enumerable(result) ⇒ Object
164
165
166
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 164
def search_result_to_enumerable(result)
result.map { |column| column['n'].wrapper }
end
|
#shutdown ⇒ Object
81
82
83
84
85
86
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 81
def shutdown
@graph_db && @graph_db.shutdown
Neo4j::Session.clear_listeners
@graph_db = nil
end
|
#start ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 49
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
43
44
45
46
47
|
# File 'lib/neo4j-embedded/embedded_session.rb', line 43
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
|