ruby_event_store 0.27.1 → 0.28.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 +5 -5
- data/Gemfile +2 -1
- data/Makefile +15 -1
- data/lib/ruby_event_store/client.rb +47 -55
- data/lib/ruby_event_store/constants.rb +1 -1
- data/lib/ruby_event_store/errors.rb +1 -0
- data/lib/ruby_event_store/event.rb +8 -3
- data/lib/ruby_event_store/expected_version.rb +73 -0
- data/lib/ruby_event_store/in_memory_repository.rb +48 -76
- data/lib/ruby_event_store/mappers/default.rb +8 -8
- data/lib/ruby_event_store/mappers/null_mapper.rb +15 -0
- data/lib/ruby_event_store/mappers/protobuf.rb +56 -13
- data/lib/ruby_event_store/metadata.rb +51 -0
- data/lib/ruby_event_store/pub_sub/broker.rb +17 -15
- data/lib/ruby_event_store/serialized_record.rb +30 -0
- data/lib/ruby_event_store/spec/event_broker_lint.rb +11 -0
- data/lib/ruby_event_store/spec/event_repository_lint.rb +474 -413
- data/lib/ruby_event_store/specification.rb +76 -0
- data/lib/ruby_event_store/stream.rb +29 -1
- data/lib/ruby_event_store/version.rb +1 -1
- data/lib/ruby_event_store.rb +4 -0
- data/ruby_event_store.gemspec +7 -1
- metadata +13 -5
@@ -0,0 +1,76 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class Specification
|
3
|
+
NO_LIMIT = Object.new.freeze
|
4
|
+
|
5
|
+
class Result < Struct.new(:direction, :start, :count, :stream)
|
6
|
+
def limit?
|
7
|
+
!count.equal?(NO_LIMIT)
|
8
|
+
end
|
9
|
+
|
10
|
+
def global_stream?
|
11
|
+
stream.global?
|
12
|
+
end
|
13
|
+
|
14
|
+
def stream_name
|
15
|
+
stream.name
|
16
|
+
end
|
17
|
+
|
18
|
+
def head?
|
19
|
+
start.equal?(:head)
|
20
|
+
end
|
21
|
+
|
22
|
+
def forward?
|
23
|
+
direction.equal?(:forward)
|
24
|
+
end
|
25
|
+
|
26
|
+
def backward?
|
27
|
+
!forward?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
private_constant :Result
|
31
|
+
|
32
|
+
attr_reader :result
|
33
|
+
|
34
|
+
def initialize(repository)
|
35
|
+
@repository = repository
|
36
|
+
@result = Result.new(:forward, :head, NO_LIMIT, Stream.new(GLOBAL_STREAM))
|
37
|
+
end
|
38
|
+
|
39
|
+
def stream(stream_name)
|
40
|
+
result.stream = Stream.new(stream_name)
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
def from(start)
|
45
|
+
case start
|
46
|
+
when Symbol
|
47
|
+
raise InvalidPageStart unless [:head].include?(start)
|
48
|
+
else
|
49
|
+
raise InvalidPageStart if start.nil? || start.empty?
|
50
|
+
raise EventNotFound.new(start) unless @repository.has_event?(start)
|
51
|
+
end
|
52
|
+
result.start = start
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
56
|
+
def forward
|
57
|
+
result.direction = :forward
|
58
|
+
self
|
59
|
+
end
|
60
|
+
|
61
|
+
def backward
|
62
|
+
result.direction = :backward
|
63
|
+
self
|
64
|
+
end
|
65
|
+
|
66
|
+
def limit(count)
|
67
|
+
raise InvalidPageSize unless count && count > 0
|
68
|
+
result.count = count
|
69
|
+
self
|
70
|
+
end
|
71
|
+
|
72
|
+
def each
|
73
|
+
@repository.read(result)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,3 +1,31 @@
|
|
1
1
|
module RubyEventStore
|
2
|
-
Stream
|
2
|
+
class Stream
|
3
|
+
def initialize(name)
|
4
|
+
raise IncorrectStreamData if !name.equal?(GLOBAL_STREAM) && (name.nil? || name.empty?)
|
5
|
+
@name = name
|
6
|
+
end
|
7
|
+
|
8
|
+
def global?
|
9
|
+
name.equal?(GLOBAL_STREAM)
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_reader :name
|
13
|
+
|
14
|
+
BIG_VALUE = 0b111111100100000010010010110011101011000101010101001100100110011
|
15
|
+
def hash
|
16
|
+
[
|
17
|
+
self.class,
|
18
|
+
name
|
19
|
+
].hash ^ BIG_VALUE
|
20
|
+
end
|
21
|
+
|
22
|
+
def ==(other_stream)
|
23
|
+
other_stream.instance_of?(self.class) &&
|
24
|
+
other_stream.name.eql?(name)
|
25
|
+
end
|
26
|
+
|
27
|
+
alias_method :eql?, :==
|
28
|
+
|
29
|
+
private_constant :BIG_VALUE
|
30
|
+
end
|
3
31
|
end
|
data/lib/ruby_event_store.rb
CHANGED
@@ -5,10 +5,14 @@ require 'ruby_event_store/projection'
|
|
5
5
|
require 'ruby_event_store/errors'
|
6
6
|
require 'ruby_event_store/constants'
|
7
7
|
require 'ruby_event_store/client'
|
8
|
+
require 'ruby_event_store/metadata'
|
9
|
+
require 'ruby_event_store/specification'
|
8
10
|
require 'ruby_event_store/event'
|
9
11
|
require 'ruby_event_store/stream'
|
12
|
+
require 'ruby_event_store/expected_version'
|
10
13
|
require 'ruby_event_store/deprecations'
|
11
14
|
require 'ruby_event_store/serialized_record'
|
12
15
|
require 'ruby_event_store/mappers/default'
|
13
16
|
require 'ruby_event_store/mappers/protobuf'
|
17
|
+
require 'ruby_event_store/mappers/null_mapper'
|
14
18
|
require 'ruby_event_store/version'
|
data/ruby_event_store.gemspec
CHANGED
@@ -12,7 +12,13 @@ Gem::Specification.new do |spec|
|
|
12
12
|
|
13
13
|
spec.summary = %q{Event Store in Ruby}
|
14
14
|
spec.description = %q{Implementation of Event Store in Ruby}
|
15
|
-
spec.homepage = 'https://
|
15
|
+
spec.homepage = 'https://railseventstore.org'
|
16
|
+
spec.metadata = {
|
17
|
+
"homepage_uri" => "https://railseventstore.org/",
|
18
|
+
"changelog_uri" => "https://github.com/RailsEventStore/rails_event_store/releases",
|
19
|
+
"source_code_uri" => "https://github.com/RailsEventStore/rails_event_store",
|
20
|
+
"bug_tracker_uri" => "https://github.com/RailsEventStore/rails_event_store/issues",
|
21
|
+
}
|
16
22
|
|
17
23
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
24
|
spec.bindir = 'exe'
|
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.28.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-
|
11
|
+
date: 2018-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -111,9 +111,12 @@ files:
|
|
111
111
|
- lib/ruby_event_store/deprecations.rb
|
112
112
|
- lib/ruby_event_store/errors.rb
|
113
113
|
- lib/ruby_event_store/event.rb
|
114
|
+
- lib/ruby_event_store/expected_version.rb
|
114
115
|
- lib/ruby_event_store/in_memory_repository.rb
|
115
116
|
- lib/ruby_event_store/mappers/default.rb
|
117
|
+
- lib/ruby_event_store/mappers/null_mapper.rb
|
116
118
|
- lib/ruby_event_store/mappers/protobuf.rb
|
119
|
+
- lib/ruby_event_store/metadata.rb
|
117
120
|
- lib/ruby_event_store/projection.rb
|
118
121
|
- lib/ruby_event_store/pub_sub/broker.rb
|
119
122
|
- lib/ruby_event_store/pub_sub/dispatcher.rb
|
@@ -121,13 +124,18 @@ files:
|
|
121
124
|
- lib/ruby_event_store/spec/dispatcher_lint.rb
|
122
125
|
- lib/ruby_event_store/spec/event_broker_lint.rb
|
123
126
|
- lib/ruby_event_store/spec/event_repository_lint.rb
|
127
|
+
- lib/ruby_event_store/specification.rb
|
124
128
|
- lib/ruby_event_store/stream.rb
|
125
129
|
- lib/ruby_event_store/version.rb
|
126
130
|
- ruby_event_store.gemspec
|
127
|
-
homepage: https://
|
131
|
+
homepage: https://railseventstore.org
|
128
132
|
licenses:
|
129
133
|
- MIT
|
130
|
-
metadata:
|
134
|
+
metadata:
|
135
|
+
homepage_uri: https://railseventstore.org/
|
136
|
+
changelog_uri: https://github.com/RailsEventStore/rails_event_store/releases
|
137
|
+
source_code_uri: https://github.com/RailsEventStore/rails_event_store
|
138
|
+
bug_tracker_uri: https://github.com/RailsEventStore/rails_event_store/issues
|
131
139
|
post_install_message:
|
132
140
|
rdoc_options: []
|
133
141
|
require_paths:
|
@@ -144,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
152
|
version: '0'
|
145
153
|
requirements: []
|
146
154
|
rubyforge_project:
|
147
|
-
rubygems_version: 2.6
|
155
|
+
rubygems_version: 2.7.6
|
148
156
|
signing_key:
|
149
157
|
specification_version: 4
|
150
158
|
summary: Event Store in Ruby
|