event_sourcery 0.16.1 → 0.17.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/CHANGELOG.md +4 -1
- data/lib/event_sourcery/event.rb +37 -2
- data/lib/event_sourcery/event_store/event_builder.rb +5 -1
- data/lib/event_sourcery/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d676408ca476e668d70f08dd1c29ce1c93f25415
|
4
|
+
data.tar.gz: e34dfb803088dce3cff191f95b251af18470f659
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b9fa74a6699e135575a52e5edfe4f0c9cd32c9ee1ee6cc74ae32ca1a543f6090044d2aebc63c8ed9ee35481aeff9f5990d1d4911cf4cf1d15b3923abedbec14
|
7
|
+
data.tar.gz: e17b0c1cb636abfb81524d1197afe8bf4836f5ffdda50180bb1c7322c3a0e1ab66595d0e80ef1810b4d86496defe33c2edfe499367dec660939a4d74f13081f8
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,10 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
-
## [
|
8
|
+
## [0.17.0] - 2018-03-22
|
9
|
+
### Added
|
10
|
+
- Allow changing the event class using Event#with
|
11
|
+
- Allow upcasting events using custom event classes
|
9
12
|
|
10
13
|
## [0.16.1] - 2018-01-17
|
11
14
|
- Fixed bug with Sequel gem expecting processes_event_types to be an Array
|
data/lib/event_sourcery/event.rb
CHANGED
@@ -12,6 +12,31 @@ module EventSourcery
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
# Use this method to add "upcasting" to your events.
|
16
|
+
#
|
17
|
+
# To upcast your events override the `upcast` class method on your event.
|
18
|
+
# The `upcast` method will be passed the event allowing you to modify it
|
19
|
+
# before it is passed to your event processors.
|
20
|
+
#
|
21
|
+
# A good place to start is using the `Event#with` method that allows you to
|
22
|
+
# easily change attributes.
|
23
|
+
#
|
24
|
+
# @param Event
|
25
|
+
# @return Event
|
26
|
+
# @example
|
27
|
+
# Foo = Class.new(EventSourcery::Event) do
|
28
|
+
# def self.upcast(event)
|
29
|
+
# body = event.body
|
30
|
+
#
|
31
|
+
# body['bar'] ||= 'baz'
|
32
|
+
#
|
33
|
+
# event.with(body: body)
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
def self.upcast(event)
|
37
|
+
event
|
38
|
+
end
|
39
|
+
|
15
40
|
attr_reader :id, :uuid, :aggregate_id, :type, :body, :version, :created_at, :correlation_id, :causation_id
|
16
41
|
|
17
42
|
# @!attribute [r] id
|
@@ -104,8 +129,18 @@ module EventSourcery
|
|
104
129
|
# # Of course, with can accept any number of event attributes:
|
105
130
|
#
|
106
131
|
# new_event = old_event.with(id: 42, version: 77, body: { 'attr' => 'value' })
|
107
|
-
|
108
|
-
|
132
|
+
#
|
133
|
+
# # When using typed events you can also override the event class:
|
134
|
+
#
|
135
|
+
# new_event = old_event.with(event_class: ItemRemoved)
|
136
|
+
# new_event.type # => "item_removed"
|
137
|
+
# new_event.class # => ItemRemoved
|
138
|
+
def with(event_class: self.class, **attributes)
|
139
|
+
if self.class != Event && !attributes[:type].nil? && attributes[:type] != type
|
140
|
+
raise Error, 'When using typed events change the type by changing the event class.'
|
141
|
+
end
|
142
|
+
|
143
|
+
event_class.new(**to_h.merge!(attributes))
|
109
144
|
end
|
110
145
|
|
111
146
|
# returns a hash of the event attributes
|
@@ -8,12 +8,16 @@ module EventSourcery
|
|
8
8
|
def build(event_data)
|
9
9
|
type = event_data.fetch(:type)
|
10
10
|
klass = event_type_serializer.deserialize(type)
|
11
|
-
klass.new(event_data)
|
11
|
+
upcast(klass.new(event_data))
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
16
|
attr_reader :event_type_serializer
|
17
|
+
|
18
|
+
def upcast(event)
|
19
|
+
event.class.upcast(event)
|
20
|
+
end
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_sourcery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Envato
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
requirements: []
|
144
144
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.
|
145
|
+
rubygems_version: 2.6.14
|
146
146
|
signing_key:
|
147
147
|
specification_version: 4
|
148
148
|
summary: Event Sourcing Library
|