ruby_event_store 0.29.0 → 0.30.0
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/Makefile +8 -3
- data/exe/res-deprecated-read-api-migrator +19 -0
- data/lib/ruby_event_store.rb +1 -0
- data/lib/ruby_event_store/batch_enumerator.rb +25 -0
- data/lib/ruby_event_store/client.rb +58 -59
- data/lib/ruby_event_store/deprecated_read_api_rewriter.rb +67 -0
- data/lib/ruby_event_store/deprecated_read_api_runner.rb +64 -0
- data/lib/ruby_event_store/event.rb +25 -0
- data/lib/ruby_event_store/in_memory_repository.rb +8 -8
- data/lib/ruby_event_store/projection.rb +3 -30
- data/lib/ruby_event_store/spec/event_repository_lint.rb +376 -266
- data/lib/ruby_event_store/specification.rb +34 -9
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +3 -0
- metadata +50 -3
@@ -1,8 +1,10 @@
|
|
1
1
|
module RubyEventStore
|
2
2
|
class Specification
|
3
3
|
NO_LIMIT = Object.new.freeze
|
4
|
+
NO_BATCH = Object.new.freeze
|
5
|
+
DEFAULT_BATCH_SIZE = 100
|
4
6
|
|
5
|
-
class Result < Struct.new(:direction, :start, :count, :stream)
|
7
|
+
class Result < Struct.new(:direction, :start, :count, :stream, :batch_size)
|
6
8
|
def limit?
|
7
9
|
!count.equal?(NO_LIMIT)
|
8
10
|
end
|
@@ -26,18 +28,23 @@ module RubyEventStore
|
|
26
28
|
def backward?
|
27
29
|
!forward?
|
28
30
|
end
|
31
|
+
|
32
|
+
def batched?
|
33
|
+
!batch_size.equal?(NO_BATCH)
|
34
|
+
end
|
29
35
|
end
|
30
36
|
private_constant :Result
|
31
37
|
|
32
38
|
attr_reader :result
|
33
39
|
|
34
|
-
def initialize(repository, result = Result.new(:forward, :head, NO_LIMIT, Stream.new(GLOBAL_STREAM)))
|
40
|
+
def initialize(repository, mapper, result = Result.new(:forward, :head, NO_LIMIT, Stream.new(GLOBAL_STREAM), NO_BATCH))
|
41
|
+
@mapper = mapper
|
35
42
|
@repository = repository
|
36
43
|
@result = result
|
37
44
|
end
|
38
45
|
|
39
46
|
def stream(stream_name)
|
40
|
-
Specification.new(repository, result.dup.tap { |r| r.stream = Stream.new(stream_name) })
|
47
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.stream = Stream.new(stream_name) })
|
41
48
|
end
|
42
49
|
|
43
50
|
def from(start)
|
@@ -48,27 +55,45 @@ module RubyEventStore
|
|
48
55
|
raise InvalidPageStart if start.nil? || start.empty?
|
49
56
|
raise EventNotFound.new(start) unless repository.has_event?(start)
|
50
57
|
end
|
51
|
-
Specification.new(repository, result.dup.tap { |r| r.start = start })
|
58
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.start = start })
|
52
59
|
end
|
53
60
|
|
54
61
|
def forward
|
55
|
-
Specification.new(repository, result.dup.tap { |r| r.direction = :forward })
|
62
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.direction = :forward })
|
56
63
|
end
|
57
64
|
|
58
65
|
def backward
|
59
|
-
Specification.new(repository, result.dup.tap { |r| r.direction = :backward })
|
66
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.direction = :backward })
|
60
67
|
end
|
61
68
|
|
62
69
|
def limit(count)
|
63
70
|
raise InvalidPageSize unless count && count > 0
|
64
|
-
Specification.new(repository, result.dup.tap { |r| r.count = count })
|
71
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.count = count })
|
72
|
+
end
|
73
|
+
|
74
|
+
def each_batch
|
75
|
+
return to_enum(:each_batch) unless block_given?
|
76
|
+
|
77
|
+
result_ = result.batched? ? result : result.tap { |r| r.batch_size = DEFAULT_BATCH_SIZE }
|
78
|
+
repository.read(result_).each do |batch|
|
79
|
+
yield batch.map { |serialized_record| mapper.serialized_record_to_event(serialized_record) }
|
80
|
+
end
|
65
81
|
end
|
66
82
|
|
67
83
|
def each
|
68
|
-
|
84
|
+
return to_enum unless block_given?
|
85
|
+
|
86
|
+
each_batch do |batch|
|
87
|
+
batch.each { |event| yield event }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def in_batches(batch_size = DEFAULT_BATCH_SIZE)
|
92
|
+
Specification.new(repository, mapper, result.dup.tap { |r| r.batch_size = batch_size })
|
69
93
|
end
|
94
|
+
alias :in_batches_of :in_batches
|
70
95
|
|
71
96
|
private
|
72
|
-
attr_reader :repository
|
97
|
+
attr_reader :repository, :mapper
|
73
98
|
end
|
74
99
|
end
|
data/ruby_event_store.gemspec
CHANGED
@@ -31,5 +31,8 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
32
32
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
33
33
|
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
34
|
+
spec.add_development_dependency 'parser'
|
35
|
+
spec.add_development_dependency 'unparser'
|
36
|
+
spec.add_development_dependency 'astrolabe'
|
34
37
|
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
35
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.30.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -80,6 +80,48 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.8.14
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: parser
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: unparser
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: astrolabe
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: google-protobuf
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,7 +139,8 @@ dependencies:
|
|
97
139
|
description: Implementation of Event Store in Ruby
|
98
140
|
email:
|
99
141
|
- dev@arkency.com
|
100
|
-
executables:
|
142
|
+
executables:
|
143
|
+
- res-deprecated-read-api-migrator
|
101
144
|
extensions: []
|
102
145
|
extra_rdoc_files: []
|
103
146
|
files:
|
@@ -105,9 +148,13 @@ files:
|
|
105
148
|
- Gemfile
|
106
149
|
- Makefile
|
107
150
|
- README.md
|
151
|
+
- exe/res-deprecated-read-api-migrator
|
108
152
|
- lib/ruby_event_store.rb
|
153
|
+
- lib/ruby_event_store/batch_enumerator.rb
|
109
154
|
- lib/ruby_event_store/client.rb
|
110
155
|
- lib/ruby_event_store/constants.rb
|
156
|
+
- lib/ruby_event_store/deprecated_read_api_rewriter.rb
|
157
|
+
- lib/ruby_event_store/deprecated_read_api_runner.rb
|
111
158
|
- lib/ruby_event_store/deprecations.rb
|
112
159
|
- lib/ruby_event_store/errors.rb
|
113
160
|
- lib/ruby_event_store/event.rb
|