sequent 3.3.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []