sequent 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequent +31 -25
  3. data/lib/notices.rb +2 -0
  4. data/lib/sequent/application_record.rb +2 -0
  5. data/lib/sequent/configuration.rb +24 -31
  6. data/lib/sequent/core/aggregate_repository.rb +17 -13
  7. data/lib/sequent/core/aggregate_root.rb +16 -7
  8. data/lib/sequent/core/aggregate_roots.rb +24 -0
  9. data/lib/sequent/core/aggregate_snapshotter.rb +8 -5
  10. data/lib/sequent/core/base_command_handler.rb +4 -2
  11. data/lib/sequent/core/command.rb +17 -9
  12. data/lib/sequent/core/command_record.rb +8 -3
  13. data/lib/sequent/core/command_service.rb +18 -18
  14. data/lib/sequent/core/core.rb +2 -0
  15. data/lib/sequent/core/current_event.rb +2 -0
  16. data/lib/sequent/core/event.rb +16 -11
  17. data/lib/sequent/core/event_publisher.rb +16 -15
  18. data/lib/sequent/core/event_record.rb +7 -7
  19. data/lib/sequent/core/event_store.rb +57 -50
  20. data/lib/sequent/core/ext/ext.rb +9 -1
  21. data/lib/sequent/core/helpers/array_with_type.rb +4 -1
  22. data/lib/sequent/core/helpers/association_validator.rb +9 -7
  23. data/lib/sequent/core/helpers/attribute_support.rb +45 -28
  24. data/lib/sequent/core/helpers/autoset_attributes.rb +4 -4
  25. data/lib/sequent/core/helpers/boolean_validator.rb +6 -1
  26. data/lib/sequent/core/helpers/copyable.rb +2 -2
  27. data/lib/sequent/core/helpers/date_time_validator.rb +4 -1
  28. data/lib/sequent/core/helpers/date_validator.rb +6 -1
  29. data/lib/sequent/core/helpers/default_validators.rb +12 -10
  30. data/lib/sequent/core/helpers/equal_support.rb +8 -6
  31. data/lib/sequent/core/helpers/helpers.rb +2 -0
  32. data/lib/sequent/core/helpers/mergable.rb +6 -5
  33. data/lib/sequent/core/helpers/message_handler.rb +3 -1
  34. data/lib/sequent/core/helpers/param_support.rb +19 -15
  35. data/lib/sequent/core/helpers/secret.rb +14 -12
  36. data/lib/sequent/core/helpers/string_support.rb +5 -4
  37. data/lib/sequent/core/helpers/string_to_value_parsers.rb +7 -2
  38. data/lib/sequent/core/helpers/string_validator.rb +6 -1
  39. data/lib/sequent/core/helpers/type_conversion_support.rb +5 -3
  40. data/lib/sequent/core/helpers/uuid_helper.rb +5 -2
  41. data/lib/sequent/core/helpers/value_validators.rb +23 -9
  42. data/lib/sequent/core/persistors/active_record_persistor.rb +19 -9
  43. data/lib/sequent/core/persistors/persistor.rb +16 -14
  44. data/lib/sequent/core/persistors/persistors.rb +2 -0
  45. data/lib/sequent/core/persistors/replay_optimized_postgres_persistor.rb +70 -47
  46. data/lib/sequent/core/projector.rb +25 -22
  47. data/lib/sequent/core/random_uuid_generator.rb +2 -0
  48. data/lib/sequent/core/sequent_oj.rb +2 -0
  49. data/lib/sequent/core/stream_record.rb +9 -3
  50. data/lib/sequent/core/transactions/active_record_transaction_provider.rb +5 -9
  51. data/lib/sequent/core/transactions/no_transactions.rb +2 -1
  52. data/lib/sequent/core/transactions/transactions.rb +2 -0
  53. data/lib/sequent/core/value_object.rb +8 -10
  54. data/lib/sequent/core/workflow.rb +7 -5
  55. data/lib/sequent/generator/aggregate.rb +16 -10
  56. data/lib/sequent/generator/command.rb +26 -19
  57. data/lib/sequent/generator/event.rb +19 -17
  58. data/lib/sequent/generator/generator.rb +2 -0
  59. data/lib/sequent/generator/project.rb +2 -0
  60. data/lib/sequent/generator/template_project/Gemfile +1 -1
  61. data/lib/sequent/generator.rb +2 -0
  62. data/lib/sequent/migrations/executor.rb +22 -13
  63. data/lib/sequent/migrations/functions.rb +5 -6
  64. data/lib/sequent/migrations/migrate_events.rb +12 -9
  65. data/lib/sequent/migrations/migrations.rb +2 -1
  66. data/lib/sequent/migrations/planner.rb +33 -23
  67. data/lib/sequent/migrations/projectors.rb +4 -3
  68. data/lib/sequent/migrations/sql.rb +2 -0
  69. data/lib/sequent/migrations/view_schema.rb +84 -45
  70. data/lib/sequent/rake/migration_tasks.rb +58 -22
  71. data/lib/sequent/rake/tasks.rb +5 -2
  72. data/lib/sequent/sequent.rb +2 -0
  73. data/lib/sequent/support/database.rb +30 -15
  74. data/lib/sequent/support/view_projection.rb +6 -3
  75. data/lib/sequent/support/view_schema.rb +2 -0
  76. data/lib/sequent/support.rb +2 -0
  77. data/lib/sequent/test/command_handler_helpers.rb +35 -17
  78. data/lib/sequent/test/event_handler_helpers.rb +10 -4
  79. data/lib/sequent/test/event_stream_helpers.rb +7 -3
  80. data/lib/sequent/test/time_comparison.rb +12 -5
  81. data/lib/sequent/test.rb +2 -0
  82. data/lib/sequent/util/dry_run.rb +11 -8
  83. data/lib/sequent/util/printer.rb +6 -5
  84. data/lib/sequent/util/skip_if_already_processing.rb +3 -1
  85. data/lib/sequent/util/timer.rb +2 -0
  86. data/lib/sequent/util/util.rb +2 -0
  87. data/lib/sequent.rb +2 -0
  88. data/lib/version.rb +3 -1
  89. metadata +81 -66
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequent
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Vonk
@@ -12,18 +12,18 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-02-24 00:00:00.000000000 Z
15
+ date: 2021-12-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
- name: activerecord
18
+ name: activemodel
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
23
  version: '5.0'
24
- - - "<"
24
+ - - "<="
25
25
  - !ruby/object:Gem::Version
26
- version: 6.0.4
26
+ version: 6.1.4
27
27
  type: :runtime
28
28
  prerelease: false
29
29
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,19 +31,19 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5.0'
34
- - - "<"
34
+ - - "<="
35
35
  - !ruby/object:Gem::Version
36
- version: 6.0.4
36
+ version: 6.1.4
37
37
  - !ruby/object:Gem::Dependency
38
- name: activemodel
38
+ name: activerecord
39
39
  requirement: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '5.0'
44
- - - "<"
44
+ - - "<="
45
45
  - !ruby/object:Gem::Version
46
- version: 6.0.4
46
+ version: 6.1.4
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,37 +51,37 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '5.0'
54
- - - "<"
54
+ - - "<="
55
55
  - !ruby/object:Gem::Version
56
- version: 6.0.4
56
+ version: 6.1.4
57
57
  - !ruby/object:Gem::Dependency
58
- name: pg
58
+ name: bcrypt
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '1.2'
63
+ version: '3.1'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '1.2'
70
+ version: '3.1'
71
71
  - !ruby/object:Gem::Dependency
72
- name: postgresql_cursor
72
+ name: i18n
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: '0.6'
77
+ version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: '0.6'
84
+ version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: oj
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -97,125 +97,125 @@ dependencies:
97
97
  - !ruby/object:Gem::Version
98
98
  version: '3'
99
99
  - !ruby/object:Gem::Dependency
100
- name: thread_safe
100
+ name: parallel
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: 0.3.6
105
+ version: '1.20'
106
106
  type: :runtime
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: 0.3.6
112
+ version: '1.20'
113
113
  - !ruby/object:Gem::Dependency
114
- name: parallel
114
+ name: parser
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - "~>"
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: '1.20'
119
+ version: 2.6.5
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.1'
120
123
  type: :runtime
121
124
  prerelease: false
122
125
  version_requirements: !ruby/object:Gem::Requirement
123
126
  requirements:
124
- - - "~>"
127
+ - - ">="
125
128
  - !ruby/object:Gem::Version
126
- version: '1.20'
129
+ version: 2.6.5
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '3.1'
127
133
  - !ruby/object:Gem::Dependency
128
- name: bcrypt
134
+ name: pg
129
135
  requirement: !ruby/object:Gem::Requirement
130
136
  requirements:
131
137
  - - "~>"
132
138
  - !ruby/object:Gem::Version
133
- version: '3.1'
139
+ version: '1.2'
134
140
  type: :runtime
135
141
  prerelease: false
136
142
  version_requirements: !ruby/object:Gem::Requirement
137
143
  requirements:
138
144
  - - "~>"
139
145
  - !ruby/object:Gem::Version
140
- version: '3.1'
146
+ version: '1.2'
141
147
  - !ruby/object:Gem::Dependency
142
- name: parser
148
+ name: postgresql_cursor
143
149
  requirement: !ruby/object:Gem::Requirement
144
150
  requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- version: 2.6.5
148
- - - "<="
151
+ - - "~>"
149
152
  - !ruby/object:Gem::Version
150
- version: '3'
153
+ version: '0.6'
151
154
  type: :runtime
152
155
  prerelease: false
153
156
  version_requirements: !ruby/object:Gem::Requirement
154
157
  requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- version: 2.6.5
158
- - - "<="
158
+ - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: '3'
160
+ version: '0.6'
161
161
  - !ruby/object:Gem::Dependency
162
- name: i18n
162
+ name: thread_safe
163
163
  requirement: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: '0'
167
+ version: 0.3.6
168
168
  type: :runtime
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ">="
172
+ - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: '0'
174
+ version: 0.3.6
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: tzinfo
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - "<="
179
+ - - "~>"
180
180
  - !ruby/object:Gem::Version
181
- version: 1.2.7
181
+ version: '2.0'
182
182
  type: :runtime
183
183
  prerelease: false
184
184
  version_requirements: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - "<="
186
+ - - "~>"
187
187
  - !ruby/object:Gem::Version
188
- version: 1.2.7
188
+ version: '2.0'
189
189
  - !ruby/object:Gem::Dependency
190
- name: rspec
190
+ name: pry
191
191
  requirement: !ruby/object:Gem::Requirement
192
192
  requirements:
193
193
  - - "~>"
194
194
  - !ruby/object:Gem::Version
195
- version: '3.10'
195
+ version: '0.13'
196
196
  type: :development
197
197
  prerelease: false
198
198
  version_requirements: !ruby/object:Gem::Requirement
199
199
  requirements:
200
200
  - - "~>"
201
201
  - !ruby/object:Gem::Version
202
- version: '3.10'
202
+ version: '0.13'
203
203
  - !ruby/object:Gem::Dependency
204
- name: timecop
204
+ name: rake
205
205
  requirement: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: '0.9'
209
+ version: '13'
210
210
  type: :development
211
211
  prerelease: false
212
212
  version_requirements: !ruby/object:Gem::Requirement
213
213
  requirements:
214
214
  - - "~>"
215
215
  - !ruby/object:Gem::Version
216
- version: '0.9'
216
+ version: '13'
217
217
  - !ruby/object:Gem::Dependency
218
- name: rspec-mocks
218
+ name: rspec
219
219
  requirement: !ruby/object:Gem::Requirement
220
220
  requirements:
221
221
  - - "~>"
@@ -243,33 +243,33 @@ dependencies:
243
243
  - !ruby/object:Gem::Version
244
244
  version: '1.2'
245
245
  - !ruby/object:Gem::Dependency
246
- name: rake
246
+ name: rspec-mocks
247
247
  requirement: !ruby/object:Gem::Requirement
248
248
  requirements:
249
249
  - - "~>"
250
250
  - !ruby/object:Gem::Version
251
- version: '13'
251
+ version: '3.10'
252
252
  type: :development
253
253
  prerelease: false
254
254
  version_requirements: !ruby/object:Gem::Requirement
255
255
  requirements:
256
256
  - - "~>"
257
257
  - !ruby/object:Gem::Version
258
- version: '13'
258
+ version: '3.10'
259
259
  - !ruby/object:Gem::Dependency
260
- name: pry
260
+ name: rubocop
261
261
  requirement: !ruby/object:Gem::Requirement
262
262
  requirements:
263
- - - "~>"
263
+ - - "<"
264
264
  - !ruby/object:Gem::Version
265
- version: '0.13'
265
+ version: '1.21'
266
266
  type: :development
267
267
  prerelease: false
268
268
  version_requirements: !ruby/object:Gem::Requirement
269
269
  requirements:
270
- - - "~>"
270
+ - - "<"
271
271
  - !ruby/object:Gem::Version
272
- version: '0.13'
272
+ version: '1.21'
273
273
  - !ruby/object:Gem::Dependency
274
274
  name: simplecov
275
275
  requirement: !ruby/object:Gem::Requirement
@@ -284,6 +284,20 @@ dependencies:
284
284
  - - "~>"
285
285
  - !ruby/object:Gem::Version
286
286
  version: '0.21'
287
+ - !ruby/object:Gem::Dependency
288
+ name: timecop
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: '0.9'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - "~>"
299
+ - !ruby/object:Gem::Version
300
+ version: '0.9'
287
301
  description: Sequent is a CQRS and event sourcing framework for Ruby.
288
302
  email:
289
303
  - lars.vonk@gmail.com
@@ -304,6 +318,7 @@ files:
304
318
  - lib/sequent/configuration.rb
305
319
  - lib/sequent/core/aggregate_repository.rb
306
320
  - lib/sequent/core/aggregate_root.rb
321
+ - lib/sequent/core/aggregate_roots.rb
307
322
  - lib/sequent/core/aggregate_snapshotter.rb
308
323
  - lib/sequent/core/base_command_handler.rb
309
324
  - lib/sequent/core/command.rb