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.
@@ -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
- repository.read(result)
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
@@ -1,3 +1,3 @@
1
1
  module RubyEventStore
2
- VERSION = "0.29.0"
2
+ VERSION = "0.30.0"
3
3
  end
@@ -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.29.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-06 00:00:00.000000000 Z
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