Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/http_event_store/actions/append_event_to_stream.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ def call(stream_name, event_data, expected_version = nil)
def create_event(event_data)
type = event_data.event_type
data = event_data.data
meta_data = event_data.meta_data if event_data.respond_to?(:meta_data)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why meta_data ? I would prefer metadata as this is just a single word

event_id = event_data.event_id if event_data.respond_to?(:event_id)
Event.new(type, data, event_id)
Event.new(type, data, meta_data, event_id)
end

def create_event_in_es(stream_name, event, expected_version)
Expand Down
3 changes: 2 additions & 1 deletion lib/http_event_store/api/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ def append_to_stream(stream_name, event_data, expected_version = nil)
{
eventId: event.event_id,
eventType: event.type,
data: event.data
data: event.data,
metadata: event.meta_data
}
end

Expand Down
4 changes: 2 additions & 2 deletions lib/http_event_store/event.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require 'securerandom'

class Event < Struct.new(:type, :data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time)
def initialize(type, data, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil)
class Event < Struct.new(:type, :data, :meta_data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time)
def initialize(type, data, meta_data=nil, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil)
event_id = SecureRandom.uuid if event_id.nil?
super
end
Expand Down
7 changes: 4 additions & 3 deletions lib/http_event_store/helpers/parse_entries.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@ def call(entries)
private

def create_event(entry)
return nil unless entry['data']

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's part of #21 - maybe let's move this out to #21

return nil unless entry['eventType']

id = entry['eventNumber']
event_id = entry['eventId']
type = entry['eventType']
source_event_uri = entry['id']
data = JSON.parse(entry['data'])
data = !entry['data'].nil? && !entry['data'].empty? ? JSON.parse(entry['data']) : nil
stream_name = entry['streamId']
position = entry['positionEventNumber']
created_time = entry['updated'] ? Time.parse(entry['updated']) : nil
meta_data = !entry['meta_data'].nil? && !entry['meta_data'].empty? ? JSON.parse(entry['meta_data']) : nil

Event.new(type, data, source_event_uri, event_id, id, position, stream_name, created_time)
Event.new(type, data, meta_data, source_event_uri, event_id, id, position, stream_name, created_time)
end
end
end
Expand Down
8 changes: 4 additions & 4 deletions spec/api_client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ module Api
describe '#append_to_stream' do

it "should handle one event" do
event = Event.new('event_type', { data: 1 })

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are adding new thing here - so why changing existing tests instead of just adding a new one ?

expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
event = Event.new('event_type', { data: 1 }, { meta_data: 2})
expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
client.append_to_stream(stream_name, event)
expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
client.append_to_stream(stream_name, event, 1)
end

Expand All @@ -22,7 +22,7 @@ module Api
event2 = Event.new('event-type2', {data: 2})
events = [event1, event2]

expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event1.event_id, eventType: event1.type, data: event1.data},{eventId: event2.event_id, eventType: event2.type, data: event2.data}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event1.event_id, eventType: event1.type, data: event1.data, metadata: nil},{eventId: event2.event_id, eventType: event2.type, data: event2.data, metadata: nil}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'})
client.append_to_stream(stream_name, events, 1)
end
end
Expand Down
5 changes: 5 additions & 0 deletions spec/event_store_connection_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ module HttpEventStore
expect(client.event_store[stream_name].length).to eq 1
end

specify 'can create new event with meta_data in stream from hash' do
create_event_in_es({ event_type: 'event_type', data: 'event_data', meta_data: "event_meta_data" })
expect(client.event_store[stream_name][0]["meta_data"]).to eq "\"event_meta_data\""
end

specify 'can create new event in stream from array' do
create_events_in_es([{ event_type: 'event_type', data: 'event_data' }])
expect(client.event_store[stream_name].length).to eq 1
Expand Down
2 changes: 1 addition & 1 deletion spec/in_memory_es.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def append_to_stream(stream_name, event_data, expected_version = nil)

event_data.each do |event|
id = event_store[stream_name].length
event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id})
event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id, 'meta_data' => event.meta_data.to_json})
end
end

Expand Down
2 changes: 2 additions & 0 deletions spec/parse_entries_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module Helpers
expect(events.length).to eq 1
expect(events[0].type).to eq "entryCreated"
expect(events[0].data).to eq({"a" => "1"})
expect(events[0].meta_data).to eq({"a" => "1"})
expect(events[0].event_id).to eq "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4"
expect(events[0].id).to eq 47
expect(events[0].position).to eq 51
Expand Down Expand Up @@ -48,6 +49,7 @@ def entry
"eventId" => "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4",
"eventType" => "entryCreated",
"data" => "{\n \"a\": \"1\"\n}",
"meta_data" => "{\n \"a\": \"1\"\n}",
"eventNumber" => 47,
"positionEventNumber" => 51,
"streamId" => 'entries',
Expand Down