Sha256: d4561f26cf3bff3777c9307639a7fc05b5cf31b9f7b44c187acbec184265e3e8
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true module ActiveGraph module Transactions extend ActiveSupport::Concern included do thread_mattr_accessor :explicit_session, :tx end class_methods do def session(**session_config) ActiveGraph::Base.driver.session(**session_config) do |session| self.explicit_session = session yield session session.last_bookmark end end def write_transaction(**config, &block) send_transaction(:write_transaction, **config, &block) end def read_transaction(**config, &block) send_transaction(:read_transaction, **config, &block) end alias transaction write_transaction private def send_transaction(method, **config, &block) return yield tx if tx&.open? return run_transaction_work(explicit_session, method, **config, &block) if explicit_session&.open? driver.session do |session| run_transaction_work(session, method, **config, &block) end end def run_transaction_work(session, method, **config, &block) implicit = config.delete(:implicit) session.send(method, **config) do |tx| self.tx = tx block.call(tx).tap do |result| if implicit && [Core::Result, ActiveGraph::Node::Query::QueryProxy, ActiveGraph::Core::Query] .any?(&result.method(:is_a?)) result.store end end end.tap { tx.apply_callbacks } rescue ActiveGraph::Rollback # rollbacks are silently swallowed end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activegraph-11.0.0.beta.1-java | lib/active_graph/transactions.rb |