Sha256: a0b2c91567d4183fab131608f55f81504b8c24d549b1fe14fdc41202978d169f

Contents?: true

Size: 791 Bytes

Versions: 2

Compression:

Stored size: 791 Bytes

Contents

# frozen_string_literal: true

class Grumlin::Transaction
  attr_reader :session_id

  include Console

  COMMIT = Grumlin::Repository.new.g.step(:tx, :commit)
  ROLLBACK = Grumlin::Repository.new.g.step(:tx, :rollback)

  def initialize(traversal_start_class, pool:, middlewares:)
    @traversal_start_class = traversal_start_class
    @pool = pool
    @session_id = SecureRandom.uuid
    @middlewares = middlewares
  end

  def begin
    @traversal_start_class.new(session_id: @session_id)
  end

  def commit
    finalize(COMMIT)
  end

  def rollback
    finalize(ROLLBACK)
  end

  private

  def finalize(step)
    @middlewares.call(traversal: step,
                      need_results: false,
                      session_id: @session_id,
                      pool: @pool)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grumlin-1.0.0.rc2 lib/grumlin/transaction.rb
grumlin-1.0.0.rc1 lib/grumlin/transaction.rb