class EventStoreClient::GRPC::Commands::Streams::Append
Public Instance Methods
call(stream, events, options: {})
click to toggle source
@api private TODO: Add support to verify the expected version
# File lib/event_store_client/adapters/grpc/commands/streams/append.rb, line 19 def call(stream, events, options: {}) # rubocop:disable Lint/UnusedMethodArgument,Metrics/LineLength serialized_events = events.map { |event| config.mapper.serialize(event) } serialized_events.each do |event| event_metadata = JSON.parse(event.metadata) custom_metadata = { "type": event.type, "created_at": Time.now, 'content-type': event_metadata['content-type'] } custom_metadata['encryption'] = event_metadata['encryption'] unless event_metadata['encryption'].nil? custom_metadata['transaction'] = event_metadata['transaction'] unless event_metadata['transaction'].nil? event_metadata = event_metadata.select { |k| ['type', 'content-type', 'created_at'].include?(k) } payload = [ request.new( options: { stream_identifier: { streamName: stream }, any: {} } ), request.new( proposed_message: { id: { string: SecureRandom.uuid }, data: event.data.b, custom_metadata: JSON.generate(custom_metadata), metadata: event_metadata } ) ] service.append(payload, metadata: metadata) end Success(events) end