Sha256: b6173b614b1bc2ac34b8509c9b7207c81cc79f51a739bcc1c483e38cd1e16609

Contents?: true

Size: 1.03 KB

Versions: 10

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Opera
  module Operation
    module Instructions
      module Executors
        class Transaction < Executor
          class RollbackTransactionError < Opera::Error; end

          def call(instruction)
            transaction_wrapper do
              super

              raise(transaction_error) if result.failure?
            end
          rescue transaction_error
            nil
          end

          def transaction_wrapper
            return transaction_class.send(transaction_method) { yield } unless transaction_options

            transaction_class.send(transaction_method, **transaction_options) { yield }
          end

          def transaction_class
            config.transaction_class
          end

          def transaction_method
            config.transaction_method
          end

          def transaction_options
            config.transaction_options
          end

          def transaction_error
            RollbackTransactionError
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
opera-0.3.5 lib/opera/operation/instructions/executors/transaction.rb
opera-0.3.4 lib/opera/operation/instructions/executors/transaction.rb
opera-0.3.3 lib/opera/operation/instructions/executors/transaction.rb
opera-0.3.2 lib/opera/operation/instructions/executors/transaction.rb
opera-0.3.1 lib/opera/operation/instructions/executors/transaction.rb
opera-0.3.0 lib/opera/operation/instructions/executors/transaction.rb
opera-0.2.18 lib/opera/operation/instructions/executors/transaction.rb
opera-0.2.17 lib/opera/operation/instructions/executors/transaction.rb
opera-0.2.16 lib/opera/operation/instructions/executors/transaction.rb
opera-0.2.15 lib/opera/operation/instructions/executors/transaction.rb