simple_event_sourcing 0.8.0 → 0.9.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/Gemfile.lock +2 -4
- data/lib/simple_event_sourcing/aggregate_root/base.rb +21 -20
- data/lib/simple_event_sourcing/version.rb +1 -1
- data/simple_event_sourcing.gemspec +5 -3
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86e29f8273b8e6cd8238ada4990bceb29514fc537c567d8e9809b30c467ad86a
|
4
|
+
data.tar.gz: 0e7cfcb7d53f1d0ec4933c231181700cc10c06733677d43296a914a2e4e104f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa2fdf5c9f120fb9dd51327b9352fad6f51f7ed684a1c66b6e536e6615a6b09602f1109f8b833536210806234ecd374761ef7a4e8b5173ff13fcfdf5fb0927e3
|
7
|
+
data.tar.gz: ff05314936adc654b36453d3ce7d94d334cd61f6b4f40ad7a1f43b70547de34a7cee72f0946920e49beb7f8bdf882b406be131ce518ff96831496e169debd9ad
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
simple_event_sourcing (0.
|
4
|
+
simple_event_sourcing (0.9.0)
|
5
|
+
redis
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
9
10
|
diff-lcs (1.3)
|
10
11
|
docile (1.3.0)
|
11
|
-
facets (3.1.0)
|
12
12
|
json (2.1.0)
|
13
13
|
rake (10.5.0)
|
14
14
|
redis (4.0.1)
|
@@ -37,9 +37,7 @@ PLATFORMS
|
|
37
37
|
|
38
38
|
DEPENDENCIES
|
39
39
|
bundler (~> 1.16)
|
40
|
-
facets
|
41
40
|
rake (~> 10.0)
|
42
|
-
redis
|
43
41
|
rspec (~> 3.0)
|
44
42
|
simple_event_sourcing!
|
45
43
|
simplecov
|
@@ -4,7 +4,6 @@ module SimpleEventSourcing
|
|
4
4
|
module Base
|
5
5
|
|
6
6
|
attr_accessor :aggregate_id
|
7
|
-
attr_reader :events
|
8
7
|
|
9
8
|
def initialize(_args = nil)
|
10
9
|
@events = []
|
@@ -15,15 +14,26 @@ module SimpleEventSourcing
|
|
15
14
|
(@events.count > 0)
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
17
|
+
def publish
|
19
18
|
published_events = @events
|
20
19
|
clear_events
|
21
20
|
published_events
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
handler = self.class.
|
26
|
-
self.instance_exec(
|
23
|
+
def apply_event(event)
|
24
|
+
handler = self.class.event_mapping[event.class]
|
25
|
+
self.instance_exec(event, &handler) if handler
|
26
|
+
end
|
27
|
+
|
28
|
+
def apply_record_event(event_class, args = {})
|
29
|
+
args[:aggregate_id] ||= aggregate_id
|
30
|
+
event = event_class.new(args)
|
31
|
+
apply_event event
|
32
|
+
record_event event
|
33
|
+
end
|
34
|
+
|
35
|
+
def id
|
36
|
+
@aggregate_id.value
|
27
37
|
end
|
28
38
|
|
29
39
|
def self.included(o)
|
@@ -40,32 +50,25 @@ module SimpleEventSourcing
|
|
40
50
|
|
41
51
|
def create_from_history(history)
|
42
52
|
aggregate = self.create_from_agrregate_id history.aggregate_id
|
43
|
-
history.each { |event| aggregate.
|
53
|
+
history.each { |event| aggregate.apply_event event }
|
44
54
|
aggregate
|
45
55
|
end
|
46
56
|
|
47
57
|
def on(*message_classes, &block)
|
48
|
-
message_classes.each { |message_class|
|
58
|
+
message_classes.each { |message_class| event_mapping[message_class] = block }
|
49
59
|
end
|
50
60
|
|
51
|
-
def
|
52
|
-
@
|
61
|
+
def event_mapping
|
62
|
+
@event_mapping ||= {}
|
53
63
|
end
|
54
64
|
|
55
|
-
def
|
56
|
-
|
65
|
+
def handles_event?(event)
|
66
|
+
event_mapping.keys.include? event.class
|
57
67
|
end
|
58
68
|
end
|
59
69
|
|
60
70
|
private
|
61
71
|
|
62
|
-
def apply_record_event(event_class, args = {})
|
63
|
-
args[:aggregate_id] ||= aggregate_id
|
64
|
-
event = event_class.new(args)
|
65
|
-
handle_message(event)
|
66
|
-
record_event event
|
67
|
-
end
|
68
|
-
|
69
72
|
def record_event(event)
|
70
73
|
@events << event
|
71
74
|
end
|
@@ -73,8 +76,6 @@ module SimpleEventSourcing
|
|
73
76
|
def clear_events
|
74
77
|
@events = []
|
75
78
|
end
|
76
|
-
|
77
|
-
|
78
79
|
end
|
79
80
|
end
|
80
81
|
end
|
@@ -29,12 +29,14 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.bindir = "exe"
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
|
-
|
32
|
+
# Development dependencies
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.16"
|
34
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
35
|
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
-
spec.add_development_dependency "facets"
|
36
|
+
#spec.add_development_dependency "facets"
|
37
37
|
spec.add_development_dependency "simplecov"
|
38
38
|
spec.add_development_dependency "timecop"
|
39
|
-
|
39
|
+
|
40
|
+
# Runtime dependencies
|
41
|
+
spec.add_runtime_dependency "redis"
|
40
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_event_sourcing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel López Torrent
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: facets
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: simplecov
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,7 +87,7 @@ dependencies:
|
|
101
87
|
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0'
|
104
|
-
type: :
|
90
|
+
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|