ruby_event_store 0.9.0 → 0.10.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/.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
|