ruby_event_store 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/CHANGELOG.md +11 -0
- data/lib/ruby_event_store/event.rb +10 -13
- data/lib/ruby_event_store/facade.rb +19 -5
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38cf4f49d0019cc3d1c4d613c6c29730dda6941f
|
4
|
+
data.tar.gz: fa880c595c0adaf4a45b6ff13cbaf1f38d1718d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6f0017ba2975ebf997db54d1fb21ae721ee805cebfaccf55b4723f435f7bd626bd3dad3cdf14276ff4a6a6c94dcb9a1e4f2105750473cfb7f9bb39c9779f42e
|
7
|
+
data.tar.gz: 8fbb2c47e171ee20c180643108ec77c5684afab845062a158d5ea60a7216cb1b082238fdb6f7da31985441f164aa0334ebddf279eabf8745b8032861431b1dcd
|
data/.travis.yml
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.1.
|
3
|
+
- 2.1.10
|
4
|
+
- 2.2.5
|
5
|
+
- 2.3.1
|
4
6
|
before_install: gem install bundler
|
5
7
|
gemfile: Gemfile
|
6
8
|
script: make mutate
|
@@ -8,4 +10,4 @@ notifications:
|
|
8
10
|
slack:
|
9
11
|
secure: qCcGv1MmryEhPoHzTvZvgSv21UcC7j2Cfq0b0hmQWuYHrHN+jhqjhg7PuElNyr0mk6N1acIcVqOAWpS20ZkG/mipW2RBBXVEc9zVR10pvJnlKDmGKd4Vmj394VgIknn8ciruglw1LoJManf1bV7/Wm4ITMt3zCQqTMGclRUqA0l/dzK2z9zU35cT4v38nTGnoGVrPQx29FvpU3J/h9qC6kGllw3Bkic2nmpFABYOI49LQFF3/vdrbnK3Zo1rudHMV0lNoPg5Ntrbd6XHXUKrBGBcZmGSh3wW/mfYf9Tcft+5MwtCu4b70KnFknx7oFmBlU8JFYg2x5f1xNSIoRkDmLI5/jNDWJ3oLAtYjgY5CdBMlxnhhfnCBmbaxEJhTuscm2sIp+S+4+ggm8x/daIK3BUaBAV5BT8An52BXhQ/F6cdnYiSVn+5lGap/1wF2TWwnN/oVc+JVfATouG9FCygzMekUaji94JMKBtS+QgoLdAE5ufEGBeDONJELRD8Lca1R4uWSg2snf93GWoONca9aJfkIfXj3m+VaoAM9Bq9DGcOXwZESkltE2E+31Fznh5qYCRH1zgtgB0Hx8x7sdaxNQyybvgNS1R0lGnIU/NrUmREcUi5BYEI5YqygBtkTZ7F/nlYQgydKjjHJ6FG3oLc3ggxffE8oAdpuxvlUQ8ZN6o=
|
10
12
|
env:
|
11
|
-
- CODECLIMATE_REPO_TOKEN=164ccfacd5c379b0113f81b055179574f55d8611bac432b3e9bd5f7c5858084a
|
13
|
+
- CODECLIMATE_REPO_TOKEN=164ccfacd5c379b0113f81b055179574f55d8611bac432b3e9bd5f7c5858084a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### 0.10.0 (12.07.2016)
|
2
|
+
|
3
|
+
* Fix: When using `append_to_stream`, expected version is no longer compared using `equal?` commit bdbe4600073d278cbf1024e8d49801fec768f6a7
|
4
|
+
* Change: Creating events with data is now done using `data` keyword argument. Previously events were created using the syntax `OrderCreated.new(order_id: 123)`, now it has to be `OrderCreated.new(data: { order_id: 123 })`. PR #24
|
5
|
+
* Change: Access to `data` attributes in an event is now using `event.data.some_attribute` syntax PR #24
|
6
|
+
* Change: Only events with the same name, event_id and data are equal - metadata is no longer taken into account PR #24
|
7
|
+
* Change: `metadata[:timestamp]` is now set when event is appended to the stream, not when it is initialized PR #24
|
8
|
+
* Change: Initialization of `RubyEventStore::Facade` is now using keyword arguments PR #24
|
9
|
+
* Add support to `metadata_proc` PR #24
|
10
|
+
* `ClosedStruct` is now a dependency PR #24
|
11
|
+
|
1
12
|
### 0.9.0 (24.06.2016)
|
2
13
|
|
3
14
|
* Change: Call instead of handle_event, handle_event stays for now but is deprecated PR #18
|
@@ -1,34 +1,31 @@
|
|
1
1
|
require 'securerandom'
|
2
|
+
require 'closed_struct'
|
2
3
|
|
3
4
|
module RubyEventStore
|
4
5
|
class Event
|
5
|
-
|
6
|
-
def initialize(event_id: SecureRandom.uuid, metadata: {}, **data)
|
7
|
-
data.each do |key, value|
|
8
|
-
singleton_class.__send__(:define_method, key) { value }
|
9
|
-
end
|
10
|
-
|
6
|
+
def initialize(event_id: SecureRandom.uuid, metadata: {}, data: {})
|
11
7
|
@event_id = event_id.to_s
|
12
|
-
@metadata = metadata
|
13
|
-
@data = data
|
14
|
-
@metadata[:timestamp] ||= Time.now.utc
|
8
|
+
@metadata = ClosedStruct.new(metadata)
|
9
|
+
@data = ClosedStruct.new(data)
|
15
10
|
end
|
16
11
|
attr_reader :event_id, :metadata, :data
|
17
12
|
|
18
13
|
def to_h
|
19
14
|
{
|
20
15
|
event_id: event_id,
|
21
|
-
metadata: metadata,
|
22
|
-
data: data
|
16
|
+
metadata: metadata.to_h,
|
17
|
+
data: data.to_h
|
23
18
|
}
|
24
19
|
end
|
25
20
|
|
26
21
|
def timestamp
|
27
|
-
metadata
|
22
|
+
metadata.timestamp rescue nil
|
28
23
|
end
|
29
24
|
|
30
25
|
def ==(other_event)
|
31
|
-
other_event.instance_of?(self.class) &&
|
26
|
+
other_event.instance_of?(self.class) &&
|
27
|
+
other_event.event_id.eql?(event_id) &&
|
28
|
+
other_event.data.eql?(data)
|
32
29
|
end
|
33
30
|
|
34
31
|
alias_method :eql?, :==
|
@@ -1,8 +1,11 @@
|
|
1
1
|
module RubyEventStore
|
2
2
|
class Facade
|
3
|
-
def initialize(repository,
|
4
|
-
|
5
|
-
|
3
|
+
def initialize(repository,
|
4
|
+
event_broker: PubSub::Broker.new,
|
5
|
+
metadata_proc: nil)
|
6
|
+
@repository = repository
|
7
|
+
@event_broker = event_broker
|
8
|
+
@metadata_proc = metadata_proc
|
6
9
|
end
|
7
10
|
attr_reader :repository, :event_broker
|
8
11
|
|
@@ -14,7 +17,8 @@ module RubyEventStore
|
|
14
17
|
|
15
18
|
def append_to_stream(stream_name, event, expected_version = :any)
|
16
19
|
validate_expected_version(stream_name, expected_version)
|
17
|
-
|
20
|
+
enriched_event = enrich_event_metadata(event)
|
21
|
+
repository.create(enriched_event, stream_name)
|
18
22
|
:ok
|
19
23
|
end
|
20
24
|
|
@@ -69,6 +73,16 @@ module RubyEventStore
|
|
69
73
|
end
|
70
74
|
|
71
75
|
private
|
76
|
+
attr_reader :metadata_proc
|
77
|
+
|
78
|
+
def enrich_event_metadata(event)
|
79
|
+
metadata = event.metadata.to_h
|
80
|
+
metadata[:timestamp] ||= Time.now.utc
|
81
|
+
metadata.merge!(metadata_proc.call || {}) if metadata_proc
|
82
|
+
|
83
|
+
event.class.new(event_id: event.event_id, metadata: metadata, data: event.data.to_h)
|
84
|
+
end
|
85
|
+
|
72
86
|
def handle_subscribe(unsub)
|
73
87
|
if block_given?
|
74
88
|
yield
|
@@ -100,7 +114,7 @@ module RubyEventStore
|
|
100
114
|
when :none
|
101
115
|
return if last_stream_event_id(stream_name).nil?
|
102
116
|
else
|
103
|
-
return if last_stream_event_id(stream_name).
|
117
|
+
return if last_stream_event_id(stream_name).eql?(expected_version)
|
104
118
|
end
|
105
119
|
raise WrongExpectedEventVersion
|
106
120
|
end
|
data/ruby_event_store.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
+
spec.add_dependency "closed_struct", "~> 0.1"
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.8"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
25
|
spec.add_development_dependency 'rspec', "~> 3.2"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
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.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: closed_struct
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.1'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|