event_store_client 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|