event_store 0.2.8 → 0.2.9
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
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTc5NmM1ODQ2NTAwNWM4YzRmM2EzNTAzZjNmYjg3OTM4YThiYmIxMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmEyNWViZTUwMDE2MzE1ZDM5NmI0NjUzMGRhNjYyNmQ0N2EzODExNA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmRkOWYyMjdhMTQ2OTM2YzUzZjY2NWYwMWI4NDA2NTQ5ODNlOGE5OWViM2Q0
|
10
|
+
NTQ4MjUwNzdlYTY0MWRjNjAzNThhMDFjMGUxMTQ1YzRjNTdjMWNkZGY5Yzkx
|
11
|
+
NTc3ODE1ODU2NWQ4M2VkNDQxNmY3YjNjNzU3YWFiMjQ0M2E2MjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzYxMzE0MWU3ZTcxMDlhYTU2Y2IwZmM2NzFiMDg0NWRhZjBiOWExZDZkODk0
|
14
|
+
MTZlNDY0NmE3M2RjZDdkNjFiYWI4ZWY4NDJiNzc1Y2UxMzhlYTM2ZmQ2NzBi
|
15
|
+
OTVjMjY0NGNmNGMzNjlmMzA2NmVjYjM3ODc0ZjVmY2RiYWJkMWY=
|
data/lib/event_store.rb
CHANGED
@@ -99,16 +99,11 @@ module EventStore
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def self.escape_bytea(binary_string)
|
102
|
-
|
102
|
+
binary_string.unpack('H*').join
|
103
103
|
end
|
104
104
|
|
105
105
|
def self.unescape_bytea(binary_string)
|
106
|
-
|
107
|
-
[binary_string].pack("H*")
|
108
|
-
else
|
109
|
-
unescaped = Sequel::Postgres::Adapter.unescape_bytea(binary_string)
|
110
|
-
unescaped[0] == "'" && unescaped[-1] == "'" ? unescaped[1...-1] : unescaped #postgres adds an extra set of quotes when you insert it, Redis does not. Therefore we need to pull off the extra quotes if they are there
|
111
|
-
end
|
106
|
+
[binary_string].pack("H*")
|
112
107
|
end
|
113
108
|
|
114
109
|
def self.custom_config(database_config, redis_config, table_name = 'events', environment = 'production')
|
@@ -138,4 +133,4 @@ module EventStore
|
|
138
133
|
def self.vertica_host
|
139
134
|
File.read File.expand_path(File.join('..','..','db', 'vertica_host_address.txt'), __FILE__)
|
140
135
|
end
|
141
|
-
end
|
136
|
+
end
|
@@ -45,7 +45,10 @@ module EventStore
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def events_from(version_number, max = nil)
|
48
|
-
events.limit(max).where{ version >= version_number.to_i }.all
|
48
|
+
events.limit(max).where{ version >= version_number.to_i }.all.map do |event|
|
49
|
+
event[:serialized_event] = EventStore.unescape_bytea(event[:serialized_event])
|
50
|
+
event
|
51
|
+
end
|
49
52
|
end
|
50
53
|
|
51
54
|
def event_stream_between(start_time, end_time, fully_qualified_names = [])
|
data/lib/event_store/version.rb
CHANGED
Binary file
|
@@ -78,6 +78,25 @@ describe EventStore::Client do
|
|
78
78
|
stream = es_client.new(AGGREGATE_ID_ONE, :device).event_stream
|
79
79
|
expect(stream.count).to eq(10)
|
80
80
|
end
|
81
|
+
|
82
|
+
context "when the serialized event is terminated prematurely with a null byte" do
|
83
|
+
it "does not truncate the serialized event when there is a binary zero value is at the end" do
|
84
|
+
serialized_event = serialized_event_data_terminated_by_null
|
85
|
+
client = es_client.new("any_device", :device)
|
86
|
+
event = EventStore::Event.new("any_device", @event_time, 'other_event_name', serialized_event, client.version + 1)
|
87
|
+
client.append([event])
|
88
|
+
expect(client.event_stream.last[:serialized_event]).to eql(serialized_event)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "conversion of byte array to and from hex should be lossless" do
|
92
|
+
client = es_client.new("any_device", :device)
|
93
|
+
serialized_event = serialized_event_data_terminated_by_null
|
94
|
+
event = EventStore::Event.new("any_device", @event_time, 'terminated_by_null_event', serialized_event, client.version + 1)
|
95
|
+
client.append([event])
|
96
|
+
hex_from_db = EventStore.db.from(EventStore.fully_qualified_table).where(fully_qualified_name: 'terminated_by_null_event').first[:serialized_event]
|
97
|
+
expect(hex_from_db).to eql(EventStore.escape_bytea(serialized_event))
|
98
|
+
end
|
99
|
+
end
|
81
100
|
end
|
82
101
|
|
83
102
|
|
@@ -380,6 +399,10 @@ describe EventStore::Client do
|
|
380
399
|
end
|
381
400
|
|
382
401
|
end
|
402
|
+
def serialized_event_data_terminated_by_null
|
403
|
+
@term_data ||= File.open(File.expand_path("../binary_string_term_with_null_byte.txt", __FILE__), 'rb') {|f| f.read}
|
404
|
+
@term_data
|
405
|
+
end
|
383
406
|
def serialized_binary_event_data
|
384
407
|
@event_data ||= File.open(File.expand_path("../serialized_binary_event_data.txt", __FILE__), 'rb') {|f| f.read}
|
385
408
|
@event_data
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Saieg, John Colvin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -240,6 +240,7 @@ files:
|
|
240
240
|
- spec/benchmark/bench.rb
|
241
241
|
- spec/benchmark/memory_profile.rb
|
242
242
|
- spec/benchmark/seed_db.rb
|
243
|
+
- spec/event_store/binary_string_term_with_null_byte.txt
|
243
244
|
- spec/event_store/client_spec.rb
|
244
245
|
- spec/event_store/config_spec.rb
|
245
246
|
- spec/event_store/serialized_binary_event_data.txt
|
@@ -274,6 +275,7 @@ test_files:
|
|
274
275
|
- spec/benchmark/bench.rb
|
275
276
|
- spec/benchmark/memory_profile.rb
|
276
277
|
- spec/benchmark/seed_db.rb
|
278
|
+
- spec/event_store/binary_string_term_with_null_byte.txt
|
277
279
|
- spec/event_store/client_spec.rb
|
278
280
|
- spec/event_store/config_spec.rb
|
279
281
|
- spec/event_store/serialized_binary_event_data.txt
|