class RubyEventStore::ROM::Memory::UnitOfWork
Public Class Methods
mutex()
click to toggle source
# File lib/ruby_event_store/rom/adapters/memory/unit_of_work.rb, line 7 def self.mutex @mutex ||= Mutex.new end
Public Instance Methods
commit!(_gateway, changesets, **_options)
click to toggle source
# File lib/ruby_event_store/rom/adapters/memory/unit_of_work.rb, line 11 def commit!(_gateway, changesets, **_options) self.class.mutex.synchronize do committed = [] begin until changesets.empty? changeset = changesets.shift relation = env.rom_container.relations[changeset.relation.name] committed << [changeset, relation] changeset.commit end rescue StandardError committed.reverse_each do |c, r| r.restrict(id: c.to_a.map { |e| e[:id] }).command(:delete, result: :many).call end raise end end end