class EventStoreClient::HTTP::Commands::Streams::LinkTo
Public Instance Methods
call(stream_name, events, options: {})
click to toggle source
# File lib/event_store_client/adapters/http/commands/streams/link_to.rb, line 8 def call(stream_name, events, options: {}) expected_version = options[:expected_version] data = build_linking_data(events) headers = { 'ES-ExpectedVersion' => expected_version&.to_s }.reject { |_key, val| val.nil? || val.empty? } response = connection.call( :post, "/streams/#{stream_name}", body: data, headers: headers ) validate_response(response, expected_version) end
Private Instance Methods
build_linking_data(events)
click to toggle source
# File lib/event_store_client/adapters/http/commands/streams/link_to.rb, line 36 def build_linking_data(events) [events].flatten.map do |event| { eventId: event.id, eventType: '$>', data: event.title } end end
validate_response(resp, expected_version)
click to toggle source
# File lib/event_store_client/adapters/http/commands/streams/link_to.rb, line 26 def validate_response(resp, expected_version) wrong_version = resp.status == 400 && resp.reason_phrase == 'Wrong expected EventNumber' return Success() unless wrong_version Failure( "current version: #{resp.headers.fetch('es-currentversion')} | "\ "expected: #{expected_version}" ) end