sequent 7.0.0 → 7.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.
- checksums.yaml +4 -4
- data/db/sequent_schema.rb +5 -0
- data/lib/sequent/configuration.rb +8 -13
- data/lib/sequent/core/event_record.rb +1 -0
- data/lib/sequent/core/event_store.rb +4 -0
- data/lib/sequent/core/helpers/message_handler.rb +10 -11
- data/lib/sequent/core/helpers/message_router.rb +13 -7
- data/lib/sequent/core/persistors/active_record_persistor.rb +4 -0
- data/lib/sequent/core/persistors/persistor.rb +5 -0
- data/lib/sequent/core/persistors/replay_optimized_postgres_persistor.rb +140 -133
- data/lib/sequent/dry_run/dry_run.rb +4 -0
- data/lib/sequent/dry_run/read_only_replay_optimized_postgres_persistor.rb +26 -0
- data/lib/sequent/dry_run/view_schema.rb +36 -0
- data/lib/sequent/generator/template_project/db/sequent_schema.rb +1 -0
- data/lib/sequent/migrations/errors.rb +12 -0
- data/lib/sequent/migrations/planner.rb +7 -3
- data/lib/sequent/migrations/versions.rb +82 -0
- data/lib/sequent/migrations/view_schema.rb +101 -58
- data/lib/sequent/rake/migration_tasks.rb +89 -6
- data/lib/sequent/support/database.rb +1 -11
- data/lib/sequent/support.rb +0 -2
- data/lib/sequent/util/util.rb +1 -0
- data/lib/sequent/util/web/clear_cache.rb +19 -0
- data/lib/sequent.rb +1 -0
- data/lib/version.rb +1 -1
- metadata +20 -29
- data/lib/sequent/core/helpers/message_dispatcher.rb +0 -23
- data/lib/sequent/support/view_projection.rb +0 -61
- data/lib/sequent/support/view_schema.rb +0 -24
data/lib/sequent/support.rb
CHANGED
data/lib/sequent/util/util.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sequent
|
4
|
+
module Util
|
5
|
+
module Web
|
6
|
+
class ClearCache
|
7
|
+
def initialize(app)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
@app.call(env)
|
13
|
+
ensure
|
14
|
+
Sequent.aggregate_repository.clear!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/sequent.rb
CHANGED
data/lib/version.rb
CHANGED
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: 7.
|
4
|
+
version: 7.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Vonk
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2024-09-26 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: activemodel
|
@@ -20,40 +20,28 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
24
|
-
- - "<"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '7.2'
|
23
|
+
version: '6.0'
|
27
24
|
type: :runtime
|
28
25
|
prerelease: false
|
29
26
|
version_requirements: !ruby/object:Gem::Requirement
|
30
27
|
requirements:
|
31
28
|
- - ">="
|
32
29
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
- - "<"
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '7.2'
|
30
|
+
version: '6.0'
|
37
31
|
- !ruby/object:Gem::Dependency
|
38
32
|
name: activerecord
|
39
33
|
requirement: !ruby/object:Gem::Requirement
|
40
34
|
requirements:
|
41
35
|
- - ">="
|
42
36
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
44
|
-
- - "<"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '7.2'
|
37
|
+
version: '6.0'
|
47
38
|
type: :runtime
|
48
39
|
prerelease: false
|
49
40
|
version_requirements: !ruby/object:Gem::Requirement
|
50
41
|
requirements:
|
51
42
|
- - ">="
|
52
43
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
- - "<"
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '7.2'
|
44
|
+
version: '6.0'
|
57
45
|
- !ruby/object:Gem::Dependency
|
58
46
|
name: bcrypt
|
59
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,7 +107,7 @@ dependencies:
|
|
119
107
|
version: 2.6.5
|
120
108
|
- - "<"
|
121
109
|
- !ruby/object:Gem::Version
|
122
|
-
version: '3.
|
110
|
+
version: '3.4'
|
123
111
|
type: :runtime
|
124
112
|
prerelease: false
|
125
113
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -129,7 +117,7 @@ dependencies:
|
|
129
117
|
version: 2.6.5
|
130
118
|
- - "<"
|
131
119
|
- !ruby/object:Gem::Version
|
132
|
-
version: '3.
|
120
|
+
version: '3.4'
|
133
121
|
- !ruby/object:Gem::Dependency
|
134
122
|
name: pg
|
135
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,16 +164,16 @@ dependencies:
|
|
176
164
|
name: tzinfo
|
177
165
|
requirement: !ruby/object:Gem::Requirement
|
178
166
|
requirements:
|
179
|
-
- - "
|
167
|
+
- - ">="
|
180
168
|
- !ruby/object:Gem::Version
|
181
|
-
version: '
|
169
|
+
version: '1.1'
|
182
170
|
type: :runtime
|
183
171
|
prerelease: false
|
184
172
|
version_requirements: !ruby/object:Gem::Requirement
|
185
173
|
requirements:
|
186
|
-
- - "
|
174
|
+
- - ">="
|
187
175
|
- !ruby/object:Gem::Version
|
188
|
-
version: '
|
176
|
+
version: '1.1'
|
189
177
|
- !ruby/object:Gem::Dependency
|
190
178
|
name: pry
|
191
179
|
requirement: !ruby/object:Gem::Requirement
|
@@ -358,7 +346,6 @@ files:
|
|
358
346
|
- lib/sequent/core/helpers/equal_support.rb
|
359
347
|
- lib/sequent/core/helpers/helpers.rb
|
360
348
|
- lib/sequent/core/helpers/mergable.rb
|
361
|
-
- lib/sequent/core/helpers/message_dispatcher.rb
|
362
349
|
- lib/sequent/core/helpers/message_handler.rb
|
363
350
|
- lib/sequent/core/helpers/message_handler_option_registry.rb
|
364
351
|
- lib/sequent/core/helpers/message_matchers/any.rb
|
@@ -396,6 +383,9 @@ files:
|
|
396
383
|
- lib/sequent/core/transactions/transactions.rb
|
397
384
|
- lib/sequent/core/value_object.rb
|
398
385
|
- lib/sequent/core/workflow.rb
|
386
|
+
- lib/sequent/dry_run/dry_run.rb
|
387
|
+
- lib/sequent/dry_run/read_only_replay_optimized_postgres_persistor.rb
|
388
|
+
- lib/sequent/dry_run/view_schema.rb
|
399
389
|
- lib/sequent/generator.rb
|
400
390
|
- lib/sequent/generator/aggregate.rb
|
401
391
|
- lib/sequent/generator/command.rb
|
@@ -428,6 +418,7 @@ files:
|
|
428
418
|
- lib/sequent/generator/template_project/spec/app/projectors/post_projector_spec.rb
|
429
419
|
- lib/sequent/generator/template_project/spec/lib/post/post_command_handler_spec.rb
|
430
420
|
- lib/sequent/generator/template_project/spec/spec_helper.rb
|
421
|
+
- lib/sequent/migrations/errors.rb
|
431
422
|
- lib/sequent/migrations/executor.rb
|
432
423
|
- lib/sequent/migrations/functions.rb
|
433
424
|
- lib/sequent/migrations/migrations.rb
|
@@ -435,13 +426,12 @@ files:
|
|
435
426
|
- lib/sequent/migrations/projectors.rb
|
436
427
|
- lib/sequent/migrations/sequent_schema.rb
|
437
428
|
- lib/sequent/migrations/sql.rb
|
429
|
+
- lib/sequent/migrations/versions.rb
|
438
430
|
- lib/sequent/migrations/view_schema.rb
|
439
431
|
- lib/sequent/rake/migration_tasks.rb
|
440
432
|
- lib/sequent/sequent.rb
|
441
433
|
- lib/sequent/support.rb
|
442
434
|
- lib/sequent/support/database.rb
|
443
|
-
- lib/sequent/support/view_projection.rb
|
444
|
-
- lib/sequent/support/view_schema.rb
|
445
435
|
- lib/sequent/test.rb
|
446
436
|
- lib/sequent/test/command_handler_helpers.rb
|
447
437
|
- lib/sequent/test/database_helpers.rb
|
@@ -453,6 +443,7 @@ files:
|
|
453
443
|
- lib/sequent/util/skip_if_already_processing.rb
|
454
444
|
- lib/sequent/util/timer.rb
|
455
445
|
- lib/sequent/util/util.rb
|
446
|
+
- lib/sequent/util/web/clear_cache.rb
|
456
447
|
- lib/version.rb
|
457
448
|
homepage: https://github.com/zilverline/sequent
|
458
449
|
licenses:
|
@@ -466,14 +457,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
466
457
|
requirements:
|
467
458
|
- - ">="
|
468
459
|
- !ruby/object:Gem::Version
|
469
|
-
version: '
|
460
|
+
version: '3.0'
|
470
461
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
471
462
|
requirements:
|
472
463
|
- - ">="
|
473
464
|
- !ruby/object:Gem::Version
|
474
465
|
version: '0'
|
475
466
|
requirements: []
|
476
|
-
rubygems_version: 3.
|
467
|
+
rubygems_version: 3.5.16
|
477
468
|
signing_key:
|
478
469
|
specification_version: 4
|
479
470
|
summary: Event sourcing framework for Ruby
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sequent
|
4
|
-
module Core
|
5
|
-
module Helpers
|
6
|
-
class MessageDispatcher
|
7
|
-
def initialize(message_router, context)
|
8
|
-
@message_router = message_router
|
9
|
-
@context = context
|
10
|
-
end
|
11
|
-
|
12
|
-
def dispatch_message(message)
|
13
|
-
@message_router
|
14
|
-
.match_message(message)
|
15
|
-
.each do |handler|
|
16
|
-
Sequent.logger.debug("[MessageDispatcher] Handler #{@context.class} handling #{message.class}")
|
17
|
-
@context.instance_exec(message, &handler)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'postgresql_cursor'
|
4
|
-
|
5
|
-
module Sequent
|
6
|
-
module Support
|
7
|
-
class ViewProjection
|
8
|
-
attr_reader :name, :version, :schema_definition
|
9
|
-
|
10
|
-
def initialize(options)
|
11
|
-
@name = options.fetch(:name)
|
12
|
-
@version = options.fetch(:version)
|
13
|
-
@schema_definition = options.fetch(:definition)
|
14
|
-
@replay_event_handlers = options.fetch(:event_handlers)
|
15
|
-
end
|
16
|
-
|
17
|
-
def build!
|
18
|
-
with_default_configuration do
|
19
|
-
Sequent.configuration.event_handlers = @replay_event_handlers
|
20
|
-
|
21
|
-
load schema_definition
|
22
|
-
event_store = Sequent.configuration.event_store
|
23
|
-
ordering = Events::ORDERED_BY_STREAM
|
24
|
-
event_store.replay_events_from_cursor(
|
25
|
-
block_size: 10_000,
|
26
|
-
get_events: -> { ordering[event_store] },
|
27
|
-
)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def schema_name
|
32
|
-
"#{name}_#{version}"
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def with_default_configuration
|
38
|
-
original_configuration = Sequent.configuration
|
39
|
-
Sequent::Configuration.reset
|
40
|
-
yield
|
41
|
-
Sequent::Configuration.restore(original_configuration)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
module Events
|
46
|
-
extend ActiveRecord::ConnectionAdapters::Quoting
|
47
|
-
|
48
|
-
ORDERED_BY_STREAM = ->(_event_store) do
|
49
|
-
event_records = quote_table_name(Sequent.configuration.event_record_class.table_name)
|
50
|
-
stream_records = quote_table_name(Sequent.configuration.stream_record_class.table_name)
|
51
|
-
snapshot_event_type = quote(Sequent.configuration.snapshot_event_class)
|
52
|
-
|
53
|
-
Sequent.configuration.event_record_class
|
54
|
-
.select('event_type, event_json')
|
55
|
-
.joins("INNER JOIN #{stream_records} ON #{event_records}.stream_record_id = #{stream_records}.id")
|
56
|
-
.where("event_type <> #{snapshot_event_type}")
|
57
|
-
.order!("#{stream_records}.id, #{event_records}.sequence_number")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sequent
|
4
|
-
module Support
|
5
|
-
class ViewSchema < ActiveRecord::Schema
|
6
|
-
def define(info, &block)
|
7
|
-
view_projection = info[:view_projection]
|
8
|
-
switch_to_schema(view_projection) if view_projection
|
9
|
-
super
|
10
|
-
ensure
|
11
|
-
switch_back_to_original_schema if view_projection
|
12
|
-
end
|
13
|
-
|
14
|
-
def switch_to_schema(view_projection)
|
15
|
-
@original_schema_search_path = connection.schema_search_path
|
16
|
-
connection.schema_search_path = view_projection.schema_name
|
17
|
-
end
|
18
|
-
|
19
|
-
def switch_back_to_original_schema
|
20
|
-
connection.schema_search_path = @original_schema_search_path
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|