class Neo4j::Core::CypherSession::Adaptors::Base

Constants

EMPTY
NEWLINE_W_SPACES
Query
USER_AGENT_STRING

Attributes

options[R]
wrap_level[RW]

Public Class Methods

transaction_class() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
200 def transaction_class
201   fail '.transaction_class method not implemented on adaptor!'
202 end

Public Instance Methods

close() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
193 def close; end
connect(*_args) click to toggle source
   # File lib/neo4j/core/cypher_session/adaptors.rb
66 def connect(*_args)
67   fail '#connect not implemented!'
68 end
default_subscribe() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
189 def default_subscribe
190   subscribe_to_request
191 end
logger() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
154 def logger
155   return @logger if @logger
156 
157   @logger = if @options[:logger]
158               @options[:logger]
159             else
160               Logger.new(logger_location).tap do |logger|
161                 logger.level = logger_level
162               end
163             end
164 end
queries(session, options = {}, &block) click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
113 def queries(session, options = {}, &block)
114   query_builder = QueryBuilder.new
115 
116   query_builder.instance_eval(&block)
117 
118   new_or_current_transaction(session, options[:transaction]) do |tx|
119     query_set(tx, query_builder.queries, {commit: !options[:transaction]}.merge(options))
120   end
121 end
query(session, *args) click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
102 def query(session, *args)
103   options = case args.size
104             when 3
105               args.pop
106             when 2
107               args.pop if args[0].is_a?(::Neo4j::Core::Query)
108             end || {}
109 
110   queries(session, options) { append(*args) }[0]
111 end
setup_queries!(queries, transaction, options = {}) click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
166 def setup_queries!(queries, transaction, options = {})
167   validate_connection!(transaction)
168 
169   return if options[:skip_instrumentation]
170   queries.each do |query|
171     self.class.instrument_query(query, self) {}
172   end
173 end
supports_metadata?() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
195 def supports_metadata?
196   true
197 end
transaction(session) { |tx| ... } click to toggle source

If called without a block, returns a Transaction object which can be used to call query/queries/mark_failed/commit If called with a block, the Transaction object is yielded to the block and `commit` is ensured. Any uncaught exceptions will mark the transaction as failed first

    # File lib/neo4j/core/cypher_session/adaptors.rb
138 def transaction(session)
139   return self.class.transaction_class.new(session) if !block_given?
140 
141   begin
142     tx = transaction(session)
143 
144     yield tx
145   rescue => e
146     tx.mark_failed if tx
147 
148     raise e
149   ensure
150     tx.close if tx
151   end
152 end

Private Instance Methods

logger_level() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
224 def logger_level
225   @options[:logger_level] || Logger::WARN
226 end
logger_location() click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
220 def logger_location
221   @options[:logger_location] || STDOUT
222 end
new_or_current_transaction(session, tx) { |tx| ... } click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
207 def new_or_current_transaction(session, tx, &block)
208   if tx
209     yield(tx)
210   else
211     transaction(session, &block)
212   end
213 end
validate_connection!(transaction) click to toggle source
    # File lib/neo4j/core/cypher_session/adaptors.rb
215 def validate_connection!(transaction)
216   fail 'Query attempted without a connection' if !connected?
217   fail "Invalid transaction object: #{transaction}" if !transaction.is_a?(self.class.transaction_class)
218 end