event_store_client 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +0 -2
- data/lib/event_store_client/adapters/grpc/commands/persistent_subscriptions/read.rb +8 -9
- data/lib/event_store_client/adapters/grpc/commands/streams/append.rb +11 -7
- data/lib/event_store_client/adapters/grpc/commands/streams/link_to.rb +15 -7
- data/lib/event_store_client/adapters/in_memory.rb +4 -1
- data/lib/event_store_client/deserialized_event.rb +7 -1
- data/lib/event_store_client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 134b0426087d6b24a29e55e762f5bcbdbaafbe91b3311e95e10cbaff66d83f20
|
4
|
+
data.tar.gz: 8e08fecbacc16ef6a4983f69e867a1a6295160fa35f864e8635e365366b2ad38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74af83ac0ba1dab7b00e660ed16320c9fe84ea87f39b28e9b876cd1689a02c4a48df70567b4d1949b5188a7dd37d3b6f46a6f897a7073adc368eac13807197cc
|
7
|
+
data.tar.gz: d69d047e3054f10bfd7928347d6b5e17c59c2a73aa0ea4f131af7d0a238188686975f5ac866b362dc9096d5d22d4ed9a5f29a9ef751f93e4c89b05d0b2d94dd7
|
data/README.md
CHANGED
@@ -48,16 +48,15 @@ module EventStoreClient
|
|
48
48
|
private
|
49
49
|
|
50
50
|
def deserialize_event(entry)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
51
|
+
config.mapper.deserialize(
|
52
|
+
EventStoreClient::Event.new(
|
53
|
+
id: entry.id.string,
|
54
|
+
title: "#{entry.stream_revision}@#{entry.stream_identifier.streamName}",
|
55
|
+
type: entry.metadata['type'],
|
56
|
+
data: entry.data || '{}',
|
57
|
+
metadata: (entry.metadata.to_h || {}).to_json
|
58
|
+
)
|
58
59
|
)
|
59
|
-
|
60
|
-
config.mapper.deserialize(event)
|
61
60
|
end
|
62
61
|
end
|
63
62
|
end
|
@@ -21,6 +21,15 @@ module EventStoreClient
|
|
21
21
|
|
22
22
|
serialized_events.each do |event|
|
23
23
|
event_metadata = JSON.parse(event.metadata)
|
24
|
+
custom_metadata = {
|
25
|
+
"type": event.type,
|
26
|
+
"created_at": Time.now,
|
27
|
+
'content-type': event_metadata['content-type']
|
28
|
+
}
|
29
|
+
custom_metadata['encryption'] = event_metadata['encryption'] unless event_metadata['encryption'].nil?
|
30
|
+
event_metadata = event_metadata.select { |k| ['type', 'content-type', 'created_at'].include?(k) }
|
31
|
+
|
32
|
+
|
24
33
|
payload = [
|
25
34
|
request.new(
|
26
35
|
options: {
|
@@ -36,13 +45,8 @@ module EventStoreClient
|
|
36
45
|
string: SecureRandom.uuid
|
37
46
|
},
|
38
47
|
data: event.data,
|
39
|
-
custom_metadata:
|
40
|
-
|
41
|
-
"content-type": 'application/vnd.eventstore.events+json',
|
42
|
-
"created_at": Time.now,
|
43
|
-
'encryption': event_metadata['encryption']
|
44
|
-
),
|
45
|
-
metadata: event_metadata.select { |k| ['type', 'content-type', 'created_at'].include?(k) }
|
48
|
+
custom_metadata: JSON.generate(custom_metadata),
|
49
|
+
metadata: event_metadata
|
46
50
|
}
|
47
51
|
)
|
48
52
|
]
|
@@ -17,7 +17,19 @@ module EventStoreClient
|
|
17
17
|
use_service EventStore::Client::Streams::Streams::Stub
|
18
18
|
|
19
19
|
def call(stream_name, events, options: {})
|
20
|
-
events.
|
20
|
+
events.each_with_index do |event, index|
|
21
|
+
custom_metadata = JSON.generate(
|
22
|
+
"type": '$>',
|
23
|
+
"created_at": Time.now,
|
24
|
+
"encryption": event.metadata['encryption'] || ''
|
25
|
+
)
|
26
|
+
|
27
|
+
event_metadata = event.metadata.tap do |h|
|
28
|
+
h['type'] = '$>'
|
29
|
+
h['content-type'] = 'application/octet-stream'
|
30
|
+
h.delete('encryption')
|
31
|
+
end
|
32
|
+
|
21
33
|
payload = [
|
22
34
|
request.new(
|
23
35
|
options: {
|
@@ -33,12 +45,8 @@ module EventStoreClient
|
|
33
45
|
string: event.id
|
34
46
|
},
|
35
47
|
data: event.title,
|
36
|
-
custom_metadata:
|
37
|
-
|
38
|
-
"content-type": 'application/vnd.eventstore.events+json',
|
39
|
-
"created_at": Time.now
|
40
|
-
),
|
41
|
-
metadata: event.metadata.tap { |h| h['type'] = '$>' }
|
48
|
+
custom_metadata: custom_metadata,
|
49
|
+
metadata: event_metadata
|
42
50
|
}
|
43
51
|
)
|
44
52
|
]
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'dry/monads'
|
3
4
|
module EventStoreClient
|
4
5
|
class InMemory
|
5
6
|
Response = Struct.new(:body, :status) do
|
@@ -21,6 +22,7 @@ module EventStoreClient
|
|
21
22
|
'positionEventNumber' => event_store[stream_name].length
|
22
23
|
)
|
23
24
|
end
|
25
|
+
Dry::Monads::Success()
|
24
26
|
end
|
25
27
|
|
26
28
|
def delete_stream(stream_name, options: {}) # rubocop:disable Lint/UnusedMethodArgument
|
@@ -44,9 +46,10 @@ module EventStoreClient
|
|
44
46
|
res = Response.new(response.to_json, 200)
|
45
47
|
|
46
48
|
return [] if res.body.nil? || res.body.empty?
|
47
|
-
JSON.parse(res.body)['entries'].map do |entry|
|
49
|
+
events = JSON.parse(res.body)['entries'].map do |entry|
|
48
50
|
deserialize_event(entry)
|
49
51
|
end.reverse
|
52
|
+
Dry::Monads::Success(events)
|
50
53
|
end
|
51
54
|
|
52
55
|
def read_all_from_stream(stream_name, options: {})
|
@@ -24,11 +24,17 @@ module EventStoreClient
|
|
24
24
|
@data = args.fetch(:data) { {} }
|
25
25
|
@metadata = args.fetch(:metadata) { {} }.merge(
|
26
26
|
'type' => self.class.name,
|
27
|
-
'content-type' =>
|
27
|
+
'content-type' => content_type
|
28
28
|
)
|
29
29
|
@type = args[:type] || self.class.name
|
30
30
|
@title = args[:title]
|
31
31
|
@id = args[:id]
|
32
32
|
end
|
33
|
+
|
34
|
+
def content_type
|
35
|
+
return 'application/octet-stream' if EventStoreClient.config.adapter == :grpc
|
36
|
+
|
37
|
+
'application/vnd.eventstore.events+json'
|
38
|
+
end
|
33
39
|
end
|
34
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_store_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Wilgosz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|