class RubyEventStore::ROM::Repositories::StreamEntries

Constants

POSITION_SHIFT

Public Instance Methods

create_changeset(event_ids, stream, resolved_version, global_stream: nil) click to toggle source
# File lib/ruby_event_store/rom/repositories/stream_entries.rb, line 12
def create_changeset(event_ids, stream, resolved_version, global_stream: nil)
  tuples = []

  event_ids.each_with_index do |event_id, index|
    unless stream.global?
      tuples << {
        stream: stream.name,
        position: resolved_version && resolved_version + index + POSITION_SHIFT,
        event_id: event_id
      }
    end

    next unless global_stream

    tuples << {
      stream: stream_entries.class::SERIALIZED_GLOBAL_STREAM_NAME,
      position: nil,
      event_id: event_id
    }
  end

  stream_entries.create_changeset(tuples)
end
delete(stream) click to toggle source
# File lib/ruby_event_store/rom/repositories/stream_entries.rb, line 36
def delete(stream)
  stream_entries.by_stream(stream).command(:delete).call
end
resolve_version(stream, expected_version) click to toggle source
# File lib/ruby_event_store/rom/repositories/stream_entries.rb, line 40
def resolve_version(stream, expected_version)
  expected_version.resolve_for(stream, lambda { |_stream|
    (stream_entries.max_position(stream) || {})[:position]
  })
end
streams_of(event_id) click to toggle source
# File lib/ruby_event_store/rom/repositories/stream_entries.rb, line 46
def streams_of(event_id)
  stream_entries.by_event_id(event_id).map { |e| e[:stream] }
                .reject { |s| s == stream_entries.class::SERIALIZED_GLOBAL_STREAM_NAME }
end