sequent 2.1.0 → 3.0.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/bin/sequent +65 -0
- data/db/sequent_schema.rb +9 -8
- data/lib/sequent.rb +3 -0
- data/lib/sequent/configuration.rb +67 -0
- data/lib/sequent/core/aggregate_repository.rb +1 -1
- data/lib/sequent/core/core.rb +2 -2
- data/lib/sequent/core/event_store.rb +2 -2
- data/lib/sequent/core/helpers/attribute_support.rb +3 -0
- data/lib/sequent/core/helpers/self_applier.rb +1 -1
- data/lib/sequent/core/{record_sessions/active_record_session.rb → persistors/active_record_persistor.rb} +21 -19
- data/lib/sequent/core/persistors/persistor.rb +84 -0
- data/lib/sequent/core/persistors/persistors.rb +3 -0
- data/lib/sequent/core/{record_sessions/replay_events_session.rb → persistors/replay_optimized_postgres_persistor.rb} +16 -7
- data/lib/sequent/core/projector.rb +96 -0
- data/lib/sequent/generator.rb +2 -0
- data/lib/sequent/generator/aggregate.rb +71 -0
- data/lib/sequent/generator/project.rb +61 -0
- data/lib/sequent/generator/template_aggregate/template_aggregate.rb +4 -0
- data/lib/sequent/generator/template_aggregate/template_aggregate/commands.rb +2 -0
- data/lib/sequent/generator/template_aggregate/template_aggregate/events.rb +2 -0
- data/lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate.rb +9 -0
- data/lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate_command_handler.rb +5 -0
- data/lib/sequent/generator/template_project/Gemfile +11 -0
- data/lib/sequent/generator/template_project/Gemfile.lock +72 -0
- data/lib/sequent/generator/template_project/Rakefile +12 -0
- data/lib/sequent/generator/template_project/app/projectors/post_projector.rb +22 -0
- data/lib/sequent/generator/template_project/app/records/post_record.rb +2 -0
- data/lib/sequent/generator/template_project/config/initializers/sequent.rb +13 -0
- data/lib/sequent/generator/template_project/db/database.yml +17 -0
- data/lib/sequent/generator/template_project/db/migrations.rb +17 -0
- data/lib/sequent/generator/template_project/db/sequent_schema.rb +51 -0
- data/lib/sequent/generator/template_project/db/tables/post_records.sql +10 -0
- data/lib/sequent/generator/template_project/lib/post.rb +4 -0
- data/lib/sequent/generator/template_project/lib/post/commands.rb +4 -0
- data/lib/sequent/generator/template_project/lib/post/events.rb +14 -0
- data/lib/sequent/generator/template_project/lib/post/post.rb +24 -0
- data/lib/sequent/generator/template_project/lib/post/post_command_handler.rb +5 -0
- data/lib/sequent/generator/template_project/my_app.rb +11 -0
- data/lib/sequent/generator/template_project/spec/app/projectors/post_projector_spec.rb +32 -0
- data/lib/sequent/generator/template_project/spec/lib/post/post_command_handler_spec.rb +20 -0
- data/lib/sequent/generator/template_project/spec/spec_helper.rb +29 -0
- data/lib/sequent/migrations/migrate_events.rb +1 -0
- data/lib/sequent/migrations/migrations.rb +2 -0
- data/lib/sequent/migrations/projectors.rb +18 -0
- data/lib/sequent/migrations/view_schema.rb +364 -0
- data/lib/sequent/rake/migration_tasks.rb +109 -0
- data/lib/sequent/rake/tasks.rb +16 -0
- data/lib/sequent/sequent.rb +53 -13
- data/lib/sequent/support/database.rb +53 -8
- data/lib/sequent/util/printer.rb +16 -0
- data/lib/sequent/util/timer.rb +14 -0
- data/lib/sequent/util/util.rb +2 -0
- data/lib/version.rb +1 -1
- metadata +67 -14
- data/lib/sequent/core/base_event_handler.rb +0 -54
- data/lib/sequent/core/record_sessions/record_sessions.rb +0 -2
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/tasklib'
|
4
|
+
|
5
|
+
require 'sequent/support'
|
6
|
+
require 'sequent/migrations/view_schema'
|
7
|
+
|
8
|
+
module Sequent
|
9
|
+
module Rake
|
10
|
+
class MigrationTasks < ::Rake::TaskLib
|
11
|
+
include ::Rake::DSL
|
12
|
+
|
13
|
+
def register_tasks!
|
14
|
+
namespace :sequent do
|
15
|
+
desc 'Rake task that runs before all sequent rake tasks. Hook applications can use to for instance run other rake tasks.'
|
16
|
+
task :init
|
17
|
+
|
18
|
+
namespace :db do
|
19
|
+
|
20
|
+
desc 'Create the database for the current env'
|
21
|
+
task :create => ['sequent:init'] do
|
22
|
+
ensure_rack_env_set!
|
23
|
+
sequent_schema = File.join(Sequent.configuration.database_config_directory, "#{Sequent.configuration.event_store_schema_name}.rb")
|
24
|
+
|
25
|
+
fail "File #{sequent_schema} does not exist. Check your Sequent configuration." unless File.exists?(sequent_schema)
|
26
|
+
|
27
|
+
db_config = Sequent::Support::Database.read_config(@env)
|
28
|
+
Sequent::Support::Database.create!(db_config)
|
29
|
+
|
30
|
+
Sequent::Support::Database.establish_connection(db_config)
|
31
|
+
Sequent::Support::Database.create_schema(Sequent.configuration.event_store_schema_name)
|
32
|
+
load(sequent_schema)
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'Drops the database for the current env'
|
36
|
+
task :drop, [:production] => ['sequent:init'] do |_t, args|
|
37
|
+
ensure_rack_env_set!
|
38
|
+
|
39
|
+
fail "Wont drop db in production unless you whitelist the environment as follows: rake sequent:db:drop[production]" if @env == 'production' && args[:production] != 'production'
|
40
|
+
|
41
|
+
db_config = Sequent::Support::Database.read_config(@env)
|
42
|
+
Sequent::Support::Database.drop!(db_config)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
namespace :migrate do
|
48
|
+
desc 'Rake task that runs before all migrate rake tasks. Hook applications can use to for instance run other rake tasks.'
|
49
|
+
task :init
|
50
|
+
|
51
|
+
desc 'Prints the current version in the database'
|
52
|
+
task :current_version => ['sequent:init', :init] do
|
53
|
+
ensure_rack_env_set!
|
54
|
+
|
55
|
+
Sequent::Support::Database.connect!(@env)
|
56
|
+
|
57
|
+
puts "Current version in the database is: #{Sequent::Migrations::ViewSchema::Versions.maximum(:version)}"
|
58
|
+
end
|
59
|
+
|
60
|
+
desc 'Migrates the Projectors while the app is running. Call +sequent:migrate:offline+ after this successfully completed.'
|
61
|
+
task :online => ['sequent:init', :init] do
|
62
|
+
ensure_rack_env_set!
|
63
|
+
|
64
|
+
db_config = Sequent::Support::Database.read_config(@env)
|
65
|
+
view_schema = Sequent::Migrations::ViewSchema.new(db_config: db_config)
|
66
|
+
|
67
|
+
view_schema.migrate_online
|
68
|
+
end
|
69
|
+
|
70
|
+
desc 'Migrates the events inserted while +online+ was running. It is expected +sequent:migrate:online+ ran first.'
|
71
|
+
task :offline => ['sequent:init', :init] do
|
72
|
+
ensure_rack_env_set!
|
73
|
+
|
74
|
+
db_config = Sequent::Support::Database.read_config(@env)
|
75
|
+
view_schema = Sequent::Migrations::ViewSchema.new(db_config: db_config)
|
76
|
+
|
77
|
+
view_schema.migrate_offline
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
namespace :snapshots do
|
82
|
+
desc 'Rake task that runs before all snapshots rake tasks. Hook applications can use to for instance run other rake tasks.'
|
83
|
+
task :init
|
84
|
+
|
85
|
+
task :set_snapshot_threshold, [:aggregate_type,:threshold] => ['sequent:init', :init] do
|
86
|
+
aggregate_type = args['aggregate_type']
|
87
|
+
threshold = args['threshold']
|
88
|
+
|
89
|
+
fail ArgumentError.new('usage rake sequent:snapshots:set_snapshot_threshold[AggregegateType,threshold]') unless aggregate_type
|
90
|
+
fail ArgumentError.new('usage rake sequent:snapshots:set_snapshot_threshold[AggregegateType,threshold]') unless threshold
|
91
|
+
|
92
|
+
execute "UPDATE #{Sequent.configuration.stream_record_class} SET snapshot_threshold = #{threshold.to_i} WHERE aggregate_type = '#{aggregate_type}'"
|
93
|
+
end
|
94
|
+
|
95
|
+
task :delete_all => ['sequent:init', :init] do
|
96
|
+
result = ActiveRecord::Base.connection.execute("DELETE FROM #{Sequent.configuration.event_record_class.table_name} WHERE event_type = 'Sequent::Core::SnapshotEvent'")
|
97
|
+
Sequent.logger.info "Deleted #{result.cmd_tuples} aggregate snapshots from the event store"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
def ensure_rack_env_set!
|
105
|
+
@env ||= ENV['RACK_ENV'] || fail("RACK_ENV not set")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
data/lib/sequent/rake/tasks.rb
CHANGED
@@ -20,7 +20,13 @@ module Sequent
|
|
20
20
|
@options = DEFAULT_OPTIONS.merge(options)
|
21
21
|
end
|
22
22
|
|
23
|
+
def display_deprecation_warning
|
24
|
+
warn '[DEPRECATED] Sequent::Rake::Tasks is deprecated. Please use Sequent::Rake::MigrationTasks tasks instead.'
|
25
|
+
end
|
26
|
+
|
23
27
|
def register!
|
28
|
+
display_deprecation_warning
|
29
|
+
|
24
30
|
register_db_tasks!
|
25
31
|
register_view_schema_tasks!
|
26
32
|
end
|
@@ -29,6 +35,8 @@ module Sequent
|
|
29
35
|
namespace :db do
|
30
36
|
desc 'Create the database'
|
31
37
|
task :create do
|
38
|
+
display_deprecation_warning
|
39
|
+
|
32
40
|
current_environments.each do |env|
|
33
41
|
env_db = db_config(env)
|
34
42
|
puts "Create database #{env_db['database']}"
|
@@ -38,6 +46,8 @@ module Sequent
|
|
38
46
|
|
39
47
|
desc 'Drop the database'
|
40
48
|
task :drop do
|
49
|
+
display_deprecation_warning
|
50
|
+
|
41
51
|
current_environments.each do |env|
|
42
52
|
env_db = db_config(env)
|
43
53
|
puts "Drop database #{env_db['database']}"
|
@@ -52,6 +62,8 @@ module Sequent
|
|
52
62
|
|
53
63
|
desc 'Migrate the database'
|
54
64
|
task migrate: :establish_connection do
|
65
|
+
display_deprecation_warning
|
66
|
+
|
55
67
|
database.create_schema!(options.fetch(:event_store_schema))
|
56
68
|
database.migrate(options.fetch(:migrations_path))
|
57
69
|
end
|
@@ -62,6 +74,8 @@ module Sequent
|
|
62
74
|
namespace :view_schema do
|
63
75
|
desc 'Build the view schema'
|
64
76
|
task build: :'db:establish_connection' do
|
77
|
+
display_deprecation_warning
|
78
|
+
|
65
79
|
if database.schema_exists?(view_projection.schema_name)
|
66
80
|
puts "View version #{view_projection.version} already exists; no need to build it"
|
67
81
|
else
|
@@ -72,6 +86,8 @@ module Sequent
|
|
72
86
|
|
73
87
|
desc 'Drop the view schema'
|
74
88
|
task drop: :'db:establish_connection' do
|
89
|
+
display_deprecation_warning
|
90
|
+
|
75
91
|
database.drop_schema!(view_projection.schema_name)
|
76
92
|
end
|
77
93
|
end
|
data/lib/sequent/sequent.rb
CHANGED
@@ -1,23 +1,37 @@
|
|
1
|
-
require_relative 'core/core'
|
2
|
-
require_relative 'util/util'
|
3
|
-
require_relative 'migrations/migrations'
|
4
1
|
require_relative 'configuration'
|
5
|
-
|
6
|
-
|
2
|
+
require_relative 'core/event'
|
3
|
+
require_relative 'core/command'
|
4
|
+
require_relative 'core/base_command_handler'
|
5
|
+
require_relative 'core/aggregate_root'
|
6
|
+
require_relative 'core/projector'
|
7
|
+
require_relative 'core/workflow'
|
8
|
+
require_relative 'generator'
|
7
9
|
|
8
10
|
module Sequent
|
9
11
|
def self.new_uuid
|
10
12
|
Sequent.configuration.uuid_generator.uuid
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
#
|
16
|
+
# Setup Sequent.
|
17
|
+
#
|
18
|
+
# Setup is typically called in an +initializer+ or setup phase of your application.
|
19
|
+
# A minimal setup could look like this:
|
20
|
+
#
|
21
|
+
# Sequent.configure do |config|
|
22
|
+
# config.event_handlers = [
|
23
|
+
# MyProjector.new,
|
24
|
+
# AnotherProjector.new,
|
25
|
+
# MyWorkflow.new,
|
26
|
+
# ]
|
27
|
+
#
|
28
|
+
# config.command_handlers = [
|
29
|
+
# MyCommandHandler.new,
|
30
|
+
# ]
|
31
|
+
#
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
#
|
21
35
|
def self.configure
|
22
36
|
yield Configuration.instance
|
23
37
|
end
|
@@ -30,4 +44,30 @@ module Sequent
|
|
30
44
|
def self.command_service
|
31
45
|
configuration.command_service
|
32
46
|
end
|
47
|
+
|
48
|
+
def self.new_version
|
49
|
+
migration_class.version
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.migration_class
|
53
|
+
Class.const_get(configuration.migrations_class_name)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Short hand for Sequent.configuration.logger
|
57
|
+
def self.logger
|
58
|
+
configuration.logger
|
59
|
+
end
|
60
|
+
|
61
|
+
# Short hand for Sequent.configuration.aggregate_repository
|
62
|
+
def self.aggregate_repository
|
63
|
+
configuration.aggregate_repository
|
64
|
+
end
|
65
|
+
|
66
|
+
# Shortcut classes for easy usage
|
67
|
+
Event = Sequent::Core::Event
|
68
|
+
Command = Sequent::Core::Command
|
69
|
+
CommandHandler = Sequent::Core::BaseCommandHandler
|
70
|
+
AggregateRoot = Sequent::Core::AggregateRoot
|
71
|
+
Projector = Sequent::Core::Projector
|
72
|
+
Workflow = Sequent::Core::Workflow
|
33
73
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/hash_with_indifferent_access'
|
2
|
+
|
1
3
|
module Sequent
|
2
4
|
module Support
|
3
5
|
# Offers support operations for a postgres database.
|
@@ -8,6 +10,18 @@ module Sequent
|
|
8
10
|
class Database
|
9
11
|
attr_reader :db_config
|
10
12
|
|
13
|
+
def self.connect!(env)
|
14
|
+
db_config = read_config(env)
|
15
|
+
establish_connection(db_config)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.read_config(env)
|
19
|
+
fail ArgumentError.new("env is mandatory") unless env
|
20
|
+
|
21
|
+
database_yml = File.join(Sequent.configuration.database_config_directory, 'database.yml')
|
22
|
+
YAML.load(ERB.new(File.read(database_yml)).result)[env]
|
23
|
+
end
|
24
|
+
|
11
25
|
def self.create!(db_config)
|
12
26
|
ActiveRecord::Base.establish_connection(db_config.merge('database' => 'postgres'))
|
13
27
|
ActiveRecord::Base.connection.create_database(db_config['database'])
|
@@ -26,6 +40,39 @@ module Sequent
|
|
26
40
|
ActiveRecord::Base.connection_pool.disconnect!
|
27
41
|
end
|
28
42
|
|
43
|
+
def self.execute_sql(sql)
|
44
|
+
ActiveRecord::Base.connection.execute(sql)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.create_schema(schema)
|
48
|
+
sql = "CREATE SCHEMA IF NOT EXISTS #{schema}"
|
49
|
+
if user = ActiveRecord::Base.connection_config[:username]
|
50
|
+
sql += " AUTHORIZATION #{user}"
|
51
|
+
end
|
52
|
+
execute_sql(sql)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.drop_schema!(schema_name)
|
56
|
+
execute_sql "DROP SCHEMA if exists #{schema_name} cascade"
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.with_schema_search_path(search_path, db_config, env = ENV['RACK_ENV'])
|
60
|
+
fail ArgumentError.new("env is required") unless env
|
61
|
+
|
62
|
+
disconnect!
|
63
|
+
original_search_paths = db_config['schema_search_path'].dup
|
64
|
+
ActiveRecord::Base.configurations[env.to_s] = ActiveSupport::HashWithIndifferentAccess.new(db_config).stringify_keys
|
65
|
+
db_config['schema_search_path'] = search_path
|
66
|
+
ActiveRecord::Base.establish_connection db_config
|
67
|
+
|
68
|
+
yield
|
69
|
+
|
70
|
+
ensure
|
71
|
+
disconnect!
|
72
|
+
db_config['schema_search_path'] = original_search_paths
|
73
|
+
establish_connection(db_config)
|
74
|
+
end
|
75
|
+
|
29
76
|
def schema_exists?(schema)
|
30
77
|
ActiveRecord::Base.connection.execute(
|
31
78
|
"SELECT schema_name FROM information_schema.schemata WHERE schema_name like '#{schema}'"
|
@@ -33,17 +80,15 @@ module Sequent
|
|
33
80
|
end
|
34
81
|
|
35
82
|
def create_schema!(schema)
|
36
|
-
|
37
|
-
if user = ActiveRecord::Base.connection_config[:username]
|
38
|
-
sql += " AUTHORIZATION #{user}"
|
39
|
-
end
|
40
|
-
ActiveRecord::Base.connection.execute(sql)
|
83
|
+
self.class.create_schema(schema)
|
41
84
|
end
|
42
85
|
|
43
86
|
def drop_schema!(schema)
|
44
|
-
|
45
|
-
|
46
|
-
|
87
|
+
self.class.drop_schema!(schema)
|
88
|
+
end
|
89
|
+
|
90
|
+
def execute_sql(sql)
|
91
|
+
self.class.execute_sql(sql)
|
47
92
|
end
|
48
93
|
|
49
94
|
def migrate(migrations_path, verbose: true)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Sequent
|
2
|
+
module Util
|
3
|
+
module Printer
|
4
|
+
def recursively_print(e)
|
5
|
+
logger.error "#{e.to_s}\n\n#{e.backtrace.join("\n")}"
|
6
|
+
|
7
|
+
while e.cause do
|
8
|
+
logger.error "+++++++++++++++ CAUSE +++++++++++++++"
|
9
|
+
logger.error "#{e.cause.to_s}\n\n#{e.cause.backtrace.join("\n")}"
|
10
|
+
e = e.cause
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/lib/sequent/util/util.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Vonk
|
8
8
|
- Bob Forma
|
9
9
|
- Erik Rozendaal
|
10
|
+
- Mike van Diepen
|
11
|
+
- Stephan van Diepen
|
10
12
|
autorequire:
|
11
13
|
bindir: bin
|
12
14
|
cert_chain: []
|
13
|
-
date: 2018-
|
15
|
+
date: 2018-06-08 00:00:00.000000000 Z
|
14
16
|
dependencies:
|
15
17
|
- !ruby/object:Gem::Dependency
|
16
18
|
name: activerecord
|
@@ -18,7 +20,7 @@ dependencies:
|
|
18
20
|
requirements:
|
19
21
|
- - ">="
|
20
22
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
23
|
+
version: '5.0'
|
22
24
|
- - "<"
|
23
25
|
- !ruby/object:Gem::Version
|
24
26
|
version: '5.2'
|
@@ -28,7 +30,7 @@ dependencies:
|
|
28
30
|
requirements:
|
29
31
|
- - ">="
|
30
32
|
- !ruby/object:Gem::Version
|
31
|
-
version: '
|
33
|
+
version: '5.0'
|
32
34
|
- - "<"
|
33
35
|
- !ruby/object:Gem::Version
|
34
36
|
version: '5.2'
|
@@ -38,7 +40,7 @@ dependencies:
|
|
38
40
|
requirements:
|
39
41
|
- - ">="
|
40
42
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
43
|
+
version: '5.0'
|
42
44
|
- - "<"
|
43
45
|
- !ruby/object:Gem::Version
|
44
46
|
version: '5.2'
|
@@ -48,7 +50,7 @@ dependencies:
|
|
48
50
|
requirements:
|
49
51
|
- - ">="
|
50
52
|
- !ruby/object:Gem::Version
|
51
|
-
version: '
|
53
|
+
version: '5.0'
|
52
54
|
- - "<"
|
53
55
|
- !ruby/object:Gem::Version
|
54
56
|
version: '5.2'
|
@@ -58,14 +60,14 @@ dependencies:
|
|
58
60
|
requirements:
|
59
61
|
- - "~>"
|
60
62
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
63
|
+
version: '1.0'
|
62
64
|
type: :runtime
|
63
65
|
prerelease: false
|
64
66
|
version_requirements: !ruby/object:Gem::Requirement
|
65
67
|
requirements:
|
66
68
|
- - "~>"
|
67
69
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
70
|
+
version: '1.0'
|
69
71
|
- !ruby/object:Gem::Dependency
|
70
72
|
name: postgresql_cursor
|
71
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +110,20 @@ dependencies:
|
|
108
110
|
- - "~>"
|
109
111
|
- !ruby/object:Gem::Version
|
110
112
|
version: 0.3.5
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: parallel
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 1.12.1
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.12.1
|
111
127
|
- !ruby/object:Gem::Dependency
|
112
128
|
name: rspec
|
113
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,10 +213,14 @@ email:
|
|
197
213
|
- lars.vonk@gmail.com
|
198
214
|
- bforma@zilverline.com
|
199
215
|
- erozendaal@zilverline.com
|
200
|
-
|
216
|
+
- mvdiepen@zilverline.com
|
217
|
+
- svdiepen@zilverline.com
|
218
|
+
executables:
|
219
|
+
- sequent
|
201
220
|
extensions: []
|
202
221
|
extra_rdoc_files: []
|
203
222
|
files:
|
223
|
+
- bin/sequent
|
204
224
|
- db/sequent_schema.rb
|
205
225
|
- lib/sequent.rb
|
206
226
|
- lib/sequent/configuration.rb
|
@@ -208,7 +228,6 @@ files:
|
|
208
228
|
- lib/sequent/core/aggregate_root.rb
|
209
229
|
- lib/sequent/core/aggregate_snapshotter.rb
|
210
230
|
- lib/sequent/core/base_command_handler.rb
|
211
|
-
- lib/sequent/core/base_event_handler.rb
|
212
231
|
- lib/sequent/core/command.rb
|
213
232
|
- lib/sequent/core/command_record.rb
|
214
233
|
- lib/sequent/core/command_service.rb
|
@@ -235,10 +254,12 @@ files:
|
|
235
254
|
- lib/sequent/core/helpers/type_conversion_support.rb
|
236
255
|
- lib/sequent/core/helpers/uuid_helper.rb
|
237
256
|
- lib/sequent/core/helpers/value_validators.rb
|
257
|
+
- lib/sequent/core/persistors/active_record_persistor.rb
|
258
|
+
- lib/sequent/core/persistors/persistor.rb
|
259
|
+
- lib/sequent/core/persistors/persistors.rb
|
260
|
+
- lib/sequent/core/persistors/replay_optimized_postgres_persistor.rb
|
261
|
+
- lib/sequent/core/projector.rb
|
238
262
|
- lib/sequent/core/random_uuid_generator.rb
|
239
|
-
- lib/sequent/core/record_sessions/active_record_session.rb
|
240
|
-
- lib/sequent/core/record_sessions/record_sessions.rb
|
241
|
-
- lib/sequent/core/record_sessions/replay_events_session.rb
|
242
263
|
- lib/sequent/core/sequent_oj.rb
|
243
264
|
- lib/sequent/core/stream_record.rb
|
244
265
|
- lib/sequent/core/transactions/active_record_transaction_provider.rb
|
@@ -246,8 +267,38 @@ files:
|
|
246
267
|
- lib/sequent/core/transactions/transactions.rb
|
247
268
|
- lib/sequent/core/value_object.rb
|
248
269
|
- lib/sequent/core/workflow.rb
|
270
|
+
- lib/sequent/generator.rb
|
271
|
+
- lib/sequent/generator/aggregate.rb
|
272
|
+
- lib/sequent/generator/project.rb
|
273
|
+
- lib/sequent/generator/template_aggregate/template_aggregate.rb
|
274
|
+
- lib/sequent/generator/template_aggregate/template_aggregate/commands.rb
|
275
|
+
- lib/sequent/generator/template_aggregate/template_aggregate/events.rb
|
276
|
+
- lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate.rb
|
277
|
+
- lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate_command_handler.rb
|
278
|
+
- lib/sequent/generator/template_project/Gemfile
|
279
|
+
- lib/sequent/generator/template_project/Gemfile.lock
|
280
|
+
- lib/sequent/generator/template_project/Rakefile
|
281
|
+
- lib/sequent/generator/template_project/app/projectors/post_projector.rb
|
282
|
+
- lib/sequent/generator/template_project/app/records/post_record.rb
|
283
|
+
- lib/sequent/generator/template_project/config/initializers/sequent.rb
|
284
|
+
- lib/sequent/generator/template_project/db/database.yml
|
285
|
+
- lib/sequent/generator/template_project/db/migrations.rb
|
286
|
+
- lib/sequent/generator/template_project/db/sequent_schema.rb
|
287
|
+
- lib/sequent/generator/template_project/db/tables/post_records.sql
|
288
|
+
- lib/sequent/generator/template_project/lib/post.rb
|
289
|
+
- lib/sequent/generator/template_project/lib/post/commands.rb
|
290
|
+
- lib/sequent/generator/template_project/lib/post/events.rb
|
291
|
+
- lib/sequent/generator/template_project/lib/post/post.rb
|
292
|
+
- lib/sequent/generator/template_project/lib/post/post_command_handler.rb
|
293
|
+
- lib/sequent/generator/template_project/my_app.rb
|
294
|
+
- lib/sequent/generator/template_project/spec/app/projectors/post_projector_spec.rb
|
295
|
+
- lib/sequent/generator/template_project/spec/lib/post/post_command_handler_spec.rb
|
296
|
+
- lib/sequent/generator/template_project/spec/spec_helper.rb
|
249
297
|
- lib/sequent/migrations/migrate_events.rb
|
250
298
|
- lib/sequent/migrations/migrations.rb
|
299
|
+
- lib/sequent/migrations/projectors.rb
|
300
|
+
- lib/sequent/migrations/view_schema.rb
|
301
|
+
- lib/sequent/rake/migration_tasks.rb
|
251
302
|
- lib/sequent/rake/tasks.rb
|
252
303
|
- lib/sequent/sequent.rb
|
253
304
|
- lib/sequent/support.rb
|
@@ -259,7 +310,9 @@ files:
|
|
259
310
|
- lib/sequent/test/event_handler_helpers.rb
|
260
311
|
- lib/sequent/test/event_stream_helpers.rb
|
261
312
|
- lib/sequent/test/time_comparison.rb
|
313
|
+
- lib/sequent/util/printer.rb
|
262
314
|
- lib/sequent/util/skip_if_already_processing.rb
|
315
|
+
- lib/sequent/util/timer.rb
|
263
316
|
- lib/sequent/util/util.rb
|
264
317
|
- lib/version.rb
|
265
318
|
homepage: https://github.com/zilverline/sequent
|
@@ -282,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
282
335
|
version: '0'
|
283
336
|
requirements: []
|
284
337
|
rubyforge_project:
|
285
|
-
rubygems_version: 2.7.
|
338
|
+
rubygems_version: 2.7.6
|
286
339
|
signing_key:
|
287
340
|
specification_version: 4
|
288
341
|
summary: Event sourcing framework for Ruby
|