sequent 3.3.1 → 4.1.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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequent +31 -25
  3. data/lib/notices.rb +6 -0
  4. data/lib/sequent/application_record.rb +2 -0
  5. data/lib/sequent/configuration.rb +29 -29
  6. data/lib/sequent/core/aggregate_repository.rb +24 -14
  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 +30 -11
  12. data/lib/sequent/core/command_record.rb +12 -4
  13. data/lib/sequent/core/command_service.rb +41 -25
  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 +20 -15
  18. data/lib/sequent/core/event_record.rb +7 -7
  19. data/lib/sequent/core/event_store.rb +75 -49
  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 +64 -33
  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 -4
  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 +7 -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 +6 -0
  59. data/lib/sequent/generator/project.rb +3 -1
  60. data/lib/sequent/generator/template_project/Gemfile +1 -1
  61. data/lib/sequent/generator/template_project/spec/app/projectors/post_projector_spec.rb +1 -1
  62. data/lib/sequent/generator/template_project/spec/lib/post/post_command_handler_spec.rb +1 -1
  63. data/lib/sequent/generator.rb +3 -4
  64. data/lib/sequent/migrations/executor.rb +30 -9
  65. data/lib/sequent/migrations/functions.rb +5 -6
  66. data/lib/sequent/migrations/migrate_events.rb +12 -9
  67. data/lib/sequent/migrations/migrations.rb +2 -1
  68. data/lib/sequent/migrations/planner.rb +33 -23
  69. data/lib/sequent/migrations/projectors.rb +4 -3
  70. data/lib/sequent/migrations/sql.rb +2 -0
  71. data/lib/sequent/migrations/view_schema.rb +93 -44
  72. data/lib/sequent/rake/migration_tasks.rb +59 -23
  73. data/lib/sequent/rake/tasks.rb +5 -2
  74. data/lib/sequent/sequent.rb +6 -1
  75. data/lib/sequent/support/database.rb +39 -17
  76. data/lib/sequent/support/view_projection.rb +6 -3
  77. data/lib/sequent/support/view_schema.rb +2 -0
  78. data/lib/sequent/support.rb +2 -0
  79. data/lib/sequent/test/command_handler_helpers.rb +39 -17
  80. data/lib/sequent/test/event_handler_helpers.rb +10 -4
  81. data/lib/sequent/test/event_stream_helpers.rb +7 -3
  82. data/lib/sequent/test/time_comparison.rb +12 -5
  83. data/lib/sequent/test.rb +2 -0
  84. data/lib/sequent/util/dry_run.rb +194 -0
  85. data/lib/sequent/util/printer.rb +6 -5
  86. data/lib/sequent/util/skip_if_already_processing.rb +21 -5
  87. data/lib/sequent/util/timer.rb +2 -0
  88. data/lib/sequent/util/util.rb +3 -0
  89. data/lib/sequent.rb +4 -0
  90. data/lib/version.rb +3 -1
  91. metadata +110 -59
data/lib/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Sequent
2
- VERSION = '3.3.1'
4
+ VERSION = '4.1.0'
3
5
  end
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: 3.3.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Vonk
@@ -9,21 +9,21 @@ authors:
9
9
  - Erik Rozendaal
10
10
  - Mike van Diepen
11
11
  - Stephan van Diepen
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2019-10-02 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: '5.3'
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: '5.3'
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: '5.3'
46
+ version: 6.1.4
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,205 +51,253 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '5.0'
54
- - - "<"
54
+ - - "<="
55
55
  - !ruby/object:Gem::Version
56
- version: '5.3'
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.0'
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.0'
70
+ version: '3.1'
71
71
  - !ruby/object:Gem::Dependency
72
- name: postgresql_cursor
72
+ name: i18n
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: oj
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
89
  - - "~>"
76
90
  - !ruby/object:Gem::Version
77
- version: '0.6'
91
+ version: '3'
78
92
  type: :runtime
79
93
  prerelease: false
80
94
  version_requirements: !ruby/object:Gem::Requirement
81
95
  requirements:
82
96
  - - "~>"
83
97
  - !ruby/object:Gem::Version
84
- version: '0.6'
98
+ version: '3'
85
99
  - !ruby/object:Gem::Dependency
86
- name: oj
100
+ name: parallel
87
101
  requirement: !ruby/object:Gem::Requirement
88
102
  requirements:
89
103
  - - "~>"
90
104
  - !ruby/object:Gem::Version
91
- version: '3.0'
105
+ version: '1.20'
92
106
  type: :runtime
93
107
  prerelease: false
94
108
  version_requirements: !ruby/object:Gem::Requirement
95
109
  requirements:
96
110
  - - "~>"
97
111
  - !ruby/object:Gem::Version
98
- version: '3.0'
112
+ version: '1.20'
99
113
  - !ruby/object:Gem::Dependency
100
- name: thread_safe
114
+ name: parser
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.6.5
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.1'
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: 2.6.5
130
+ - - "<"
131
+ - !ruby/object:Gem::Version
132
+ version: '3.1'
133
+ - !ruby/object:Gem::Dependency
134
+ name: pg
101
135
  requirement: !ruby/object:Gem::Requirement
102
136
  requirements:
103
137
  - - "~>"
104
138
  - !ruby/object:Gem::Version
105
- version: 0.3.5
139
+ version: '1.2'
106
140
  type: :runtime
107
141
  prerelease: false
108
142
  version_requirements: !ruby/object:Gem::Requirement
109
143
  requirements:
110
144
  - - "~>"
111
145
  - !ruby/object:Gem::Version
112
- version: 0.3.5
146
+ version: '1.2'
113
147
  - !ruby/object:Gem::Dependency
114
- name: parallel
148
+ name: postgresql_cursor
115
149
  requirement: !ruby/object:Gem::Requirement
116
150
  requirements:
117
151
  - - "~>"
118
152
  - !ruby/object:Gem::Version
119
- version: 1.12.1
153
+ version: '0.6'
120
154
  type: :runtime
121
155
  prerelease: false
122
156
  version_requirements: !ruby/object:Gem::Requirement
123
157
  requirements:
124
158
  - - "~>"
125
159
  - !ruby/object:Gem::Version
126
- version: 1.12.1
160
+ version: '0.6'
127
161
  - !ruby/object:Gem::Dependency
128
- name: bcrypt
162
+ name: thread_safe
129
163
  requirement: !ruby/object:Gem::Requirement
130
164
  requirements:
131
165
  - - "~>"
132
166
  - !ruby/object:Gem::Version
133
- version: '3.1'
167
+ version: 0.3.6
134
168
  type: :runtime
135
169
  prerelease: false
136
170
  version_requirements: !ruby/object:Gem::Requirement
137
171
  requirements:
138
172
  - - "~>"
139
173
  - !ruby/object:Gem::Version
140
- version: '3.1'
174
+ version: 0.3.6
141
175
  - !ruby/object:Gem::Dependency
142
- name: parser
176
+ name: tzinfo
143
177
  requirement: !ruby/object:Gem::Requirement
144
178
  requirements:
145
179
  - - "~>"
146
180
  - !ruby/object:Gem::Version
147
- version: '2.5'
181
+ version: '2.0'
148
182
  type: :runtime
149
183
  prerelease: false
150
184
  version_requirements: !ruby/object:Gem::Requirement
151
185
  requirements:
152
186
  - - "~>"
153
187
  - !ruby/object:Gem::Version
154
- version: '2.5'
188
+ version: '2.0'
155
189
  - !ruby/object:Gem::Dependency
156
- name: rspec
190
+ name: pry
157
191
  requirement: !ruby/object:Gem::Requirement
158
192
  requirements:
159
193
  - - "~>"
160
194
  - !ruby/object:Gem::Version
161
- version: '3.2'
195
+ version: '0.13'
162
196
  type: :development
163
197
  prerelease: false
164
198
  version_requirements: !ruby/object:Gem::Requirement
165
199
  requirements:
166
200
  - - "~>"
167
201
  - !ruby/object:Gem::Version
168
- version: '3.2'
202
+ version: '0.13'
169
203
  - !ruby/object:Gem::Dependency
170
- name: timecop
204
+ name: rake
171
205
  requirement: !ruby/object:Gem::Requirement
172
206
  requirements:
173
207
  - - "~>"
174
208
  - !ruby/object:Gem::Version
175
- version: '0.9'
209
+ version: '13'
176
210
  type: :development
177
211
  prerelease: false
178
212
  version_requirements: !ruby/object:Gem::Requirement
179
213
  requirements:
180
214
  - - "~>"
181
215
  - !ruby/object:Gem::Version
182
- version: '0.9'
216
+ version: '13'
183
217
  - !ruby/object:Gem::Dependency
184
- name: rspec-mocks
218
+ name: rspec
185
219
  requirement: !ruby/object:Gem::Requirement
186
220
  requirements:
187
221
  - - "~>"
188
222
  - !ruby/object:Gem::Version
189
- version: '3.2'
223
+ version: '3.10'
190
224
  type: :development
191
225
  prerelease: false
192
226
  version_requirements: !ruby/object:Gem::Requirement
193
227
  requirements:
194
228
  - - "~>"
195
229
  - !ruby/object:Gem::Version
196
- version: '3.2'
230
+ version: '3.10'
197
231
  - !ruby/object:Gem::Dependency
198
232
  name: rspec-collection_matchers
199
233
  requirement: !ruby/object:Gem::Requirement
200
234
  requirements:
201
235
  - - "~>"
202
236
  - !ruby/object:Gem::Version
203
- version: '1.1'
237
+ version: '1.2'
204
238
  type: :development
205
239
  prerelease: false
206
240
  version_requirements: !ruby/object:Gem::Requirement
207
241
  requirements:
208
242
  - - "~>"
209
243
  - !ruby/object:Gem::Version
210
- version: '1.1'
244
+ version: '1.2'
211
245
  - !ruby/object:Gem::Dependency
212
- name: rake
246
+ name: rspec-mocks
213
247
  requirement: !ruby/object:Gem::Requirement
214
248
  requirements:
215
249
  - - "~>"
216
250
  - !ruby/object:Gem::Version
217
- version: '10.4'
251
+ version: '3.10'
218
252
  type: :development
219
253
  prerelease: false
220
254
  version_requirements: !ruby/object:Gem::Requirement
221
255
  requirements:
222
256
  - - "~>"
223
257
  - !ruby/object:Gem::Version
224
- version: '10.4'
258
+ version: '3.10'
225
259
  - !ruby/object:Gem::Dependency
226
- name: pry
260
+ name: rubocop
261
+ requirement: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "<"
264
+ - !ruby/object:Gem::Version
265
+ version: '1.21'
266
+ type: :development
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "<"
271
+ - !ruby/object:Gem::Version
272
+ version: '1.21'
273
+ - !ruby/object:Gem::Dependency
274
+ name: simplecov
227
275
  requirement: !ruby/object:Gem::Requirement
228
276
  requirements:
229
277
  - - "~>"
230
278
  - !ruby/object:Gem::Version
231
- version: '0.10'
279
+ version: '0.21'
232
280
  type: :development
233
281
  prerelease: false
234
282
  version_requirements: !ruby/object:Gem::Requirement
235
283
  requirements:
236
284
  - - "~>"
237
285
  - !ruby/object:Gem::Version
238
- version: '0.10'
286
+ version: '0.21'
239
287
  - !ruby/object:Gem::Dependency
240
- name: simplecov
288
+ name: timecop
241
289
  requirement: !ruby/object:Gem::Requirement
242
290
  requirements:
243
291
  - - "~>"
244
292
  - !ruby/object:Gem::Version
245
- version: 0.14.1
293
+ version: '0.9'
246
294
  type: :development
247
295
  prerelease: false
248
296
  version_requirements: !ruby/object:Gem::Requirement
249
297
  requirements:
250
298
  - - "~>"
251
299
  - !ruby/object:Gem::Version
252
- version: 0.14.1
300
+ version: '0.9'
253
301
  description: Sequent is a CQRS and event sourcing framework for Ruby.
254
302
  email:
255
303
  - lars.vonk@gmail.com
@@ -264,11 +312,13 @@ extra_rdoc_files: []
264
312
  files:
265
313
  - bin/sequent
266
314
  - db/sequent_schema.rb
315
+ - lib/notices.rb
267
316
  - lib/sequent.rb
268
317
  - lib/sequent/application_record.rb
269
318
  - lib/sequent/configuration.rb
270
319
  - lib/sequent/core/aggregate_repository.rb
271
320
  - lib/sequent/core/aggregate_root.rb
321
+ - lib/sequent/core/aggregate_roots.rb
272
322
  - lib/sequent/core/aggregate_snapshotter.rb
273
323
  - lib/sequent/core/base_command_handler.rb
274
324
  - lib/sequent/core/command.rb
@@ -319,6 +369,7 @@ files:
319
369
  - lib/sequent/generator/aggregate.rb
320
370
  - lib/sequent/generator/command.rb
321
371
  - lib/sequent/generator/event.rb
372
+ - lib/sequent/generator/generator.rb
322
373
  - lib/sequent/generator/project.rb
323
374
  - lib/sequent/generator/template_aggregate/template_aggregate.rb
324
375
  - lib/sequent/generator/template_aggregate/template_aggregate/commands.rb
@@ -365,6 +416,7 @@ files:
365
416
  - lib/sequent/test/event_handler_helpers.rb
366
417
  - lib/sequent/test/event_stream_helpers.rb
367
418
  - lib/sequent/test/time_comparison.rb
419
+ - lib/sequent/util/dry_run.rb
368
420
  - lib/sequent/util/printer.rb
369
421
  - lib/sequent/util/skip_if_already_processing.rb
370
422
  - lib/sequent/util/timer.rb
@@ -374,7 +426,7 @@ homepage: https://github.com/zilverline/sequent
374
426
  licenses:
375
427
  - MIT
376
428
  metadata: {}
377
- post_install_message:
429
+ post_install_message:
378
430
  rdoc_options: []
379
431
  require_paths:
380
432
  - lib
@@ -382,16 +434,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
382
434
  requirements:
383
435
  - - ">="
384
436
  - !ruby/object:Gem::Version
385
- version: '2.5'
437
+ version: '2.7'
386
438
  required_rubygems_version: !ruby/object:Gem::Requirement
387
439
  requirements:
388
440
  - - ">="
389
441
  - !ruby/object:Gem::Version
390
442
  version: '0'
391
443
  requirements: []
392
- rubyforge_project:
393
- rubygems_version: 2.7.6
394
- signing_key:
444
+ rubygems_version: 3.2.3
445
+ signing_key:
395
446
  specification_version: 4
396
447
  summary: Event sourcing framework for Ruby
397
448
  test_files: []