Skip to content

Commit

Permalink
make server endpoint_url its own param, simplify named session logic
Browse files Browse the repository at this point in the history
  • Loading branch information
subvertallchris committed Mar 15, 2015
1 parent ae8e35d commit 568f141
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 28 deletions.
4 changes: 2 additions & 2 deletions lib/neo4j-server/cypher_session.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module Neo4j
module Server
Neo4j::Session.register_db(:server_db) do |*url_opts|
Neo4j::Server::CypherSession.open(*url_opts)
Neo4j::Session.register_db(:server_db) do |endpoint_url, url_opts|
Neo4j::Server::CypherSession.open(endpoint_url, url_opts)
end

class CypherSession < Neo4j::Session
Expand Down
41 changes: 18 additions & 23 deletions lib/neo4j/session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,21 +94,32 @@ class << self
#
# @see also Neo4j::Server::CypherSession#open for :server_db params
# @param db_type the type of database, e.g. :embedded_db, or :server_db
def open(db_type = :server_db, *params)
register(create_session(db_type, params))
def open(db_type = :server_db, endpoint_url = nil, params = {})
register(create_session(db_type, endpoint_url, params), params[:name], params[:default])
end

def open_named(db_type, name, default = nil, *params)
fail 'Multiple sessions is currently only supported for Neo4j Server connections.' unless db_type == :server_db
register(create_session(db_type, params), name, default)
# @private
def register(session, name = nil, default = nil)
if default == true
set_current(session)
elsif default.nil?
set_current(session) unless @@current_session
end
@@all_sessions[name] = session if name
session
end

# @private
def create_session(db_type, params = {})
def unregister(session)
@@current_session = nil if @@current_session == session
end

# @private
def create_session(db_type, endpoint_url, params = {})
unless @@factories[db_type]
fail "Can't connect to database '#{db_type}', available #{@@factories.keys.join(',')}"
end
@@factories[db_type].call(*params)
@@factories[db_type].call(endpoint_url, params)
end

# @return [Neo4j::Session] the current session
Expand Down Expand Up @@ -175,22 +186,6 @@ def _notify_listeners(event, data)
_listeners.each { |li| li.call(event, data) }
end

# @private
def register(session, name = nil, default = nil)
if default == true
set_current(session)
elsif default.nil?
set_current(session) unless @@current_session
end
@@all_sessions[name] = session if name
session
end

# @private
def unregister(session)
@@current_session = nil if @@current_session == session
end

def inspect
"Neo4j::Session available: #{@@factories && @@factories.keys}"
end
Expand Down
4 changes: 2 additions & 2 deletions spec/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ def server_url
end

def create_server_session(options = {})
Neo4j::Session.open(:server_db, server_url, {basic_auth: basic_auth_hash}.merge(options))
Neo4j::Session.open(:server_db, server_url, {basic_auth: basic_auth_hash}.merge!(options))
end

def create_named_server_session(name, default = nil)
Neo4j::Session.open_named(:server_db, name, default, server_url, basic_auth: basic_auth_hash)
Neo4j::Session.open(:server_db, server_url, basic_auth: basic_auth_hash, name: name, default: default)
end

def session
Expand Down
2 changes: 1 addition & 1 deletion spec/neo4j-server/e2e/cypher_session_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def open_named_session(name, default = nil)

it 'stores a named session' do
name = :test
test = open_named_session(name)
test = Neo4j::Session.open(:server_db, nil, name: name)
expect(Neo4j::Session.named(name)).to eq(test)
end

Expand Down

0 comments on commit 568f141

Please sign in to comment.