ruby_event_store 0.29.0 → 0.30.0

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