pg_eventstore 1.13.4 → 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/.rubocop.yml +11 -2
- data/CHANGELOG.md +195 -16
- data/README.md +33 -10
- data/db/migrations/10_setup_pg_cron.rb +1 -0
- data/db/migrations/11_add_events_link_global_position.sql +1 -0
- data/db/migrations/12_migrate_legacy_links.rb +83 -0
- data/db/migrations/13_remove_events_link_id.sql +6 -0
- data/db/migrations/14_remove_ids_events_id_index.sql +1 -0
- data/db/migrations/15_create_streams_global_index.sql +17 -0
- data/db/migrations/16_populate_streams_global_index.rb +150 -0
- data/db/migrations/17_create_events_global_index.sql +62 -0
- data/db/migrations/18_populate_events_global_index.rb +124 -0
- data/db/migrations/19_populate_events_global_index_p2.rb +25 -0
- data/db/migrations/20_migrate_subscriptions_current_position.sql +19 -0
- data/db/migrations/21_create_partitions_stats.sql +2 -0
- data/db/migrations/22_drop_streams_sql_view.sql +2 -0
- data/db/migrations/23_adjust_partitions_indexes.sql +5 -0
- data/db/migrations/24_drop_legacy_events_indexes.sql +3 -0
- data/db/migrations/25_add_parent_partitions_info_to_partitions.sql +16 -0
- data/db/migrations/26_change_events_stream_revision_type.rb +35 -0
- data/db/migrations/27_drop_events_horizon.sql +3 -0
- data/db/migrations/28_create_maintenance_tasks.sql +8 -0
- data/db/migrations/29_create_event_markers.sql +35 -0
- data/db/migrations/30_improve_partitions_search_in_admin_ui.rb +24 -0
- data/db/migrations/31_drop_events_id_default_value.sql +1 -0
- data/db/migrations/32_create_parittions_triggers.sql +101 -0
- data/db/migrations/9_create_events_horizon.sql +21 -0
- data/docs/AGENTS.fragment.md +696 -0
- data/docs/admin_ui.md +3 -1
- data/docs/appending_events.md +110 -49
- data/docs/configuration.md +69 -36
- data/docs/event_tracing.md +55 -0
- data/docs/events_and_streams.md +54 -30
- data/docs/how_it_works.md +57 -16
- data/docs/linking_events.md +2 -1
- data/docs/maintenance.md +14 -5
- data/docs/multiple_commands.md +30 -6
- data/docs/reading_events.md +208 -43
- data/docs/reading_streams.md +50 -0
- data/docs/replication.md +99 -0
- data/docs/subscriptions.md +165 -35
- data/docs/writing_middleware.md +25 -8
- data/ext/pg_eventstore_ext/extconf.rb +5 -0
- data/ext/pg_eventstore_ext/pg_eventstore_ext.c +74 -0
- data/lib/pg_eventstore/async_runner.rb +63 -0
- data/lib/pg_eventstore/basic_config.rb +15 -0
- data/lib/pg_eventstore/callbacks.rb +7 -5
- data/lib/pg_eventstore/chunks/chunk.rb +31 -0
- data/lib/pg_eventstore/chunks/read_api_events_index_chunk.rb +83 -0
- data/lib/pg_eventstore/chunks/replica_events_index_chunk.rb +35 -0
- data/lib/pg_eventstore/chunks/repository.rb +73 -0
- data/lib/pg_eventstore/chunks/subscription_checkpoint_chunk.rb +48 -0
- data/lib/pg_eventstore/chunks/subscription_events_index_chunk.rb +99 -0
- data/lib/pg_eventstore/chunks.rb +14 -0
- data/lib/pg_eventstore/cli/try_to_delete_subscriptions_set.rb +2 -2
- data/lib/pg_eventstore/client.rb +167 -52
- data/lib/pg_eventstore/commands/append.rb +62 -43
- data/lib/pg_eventstore/commands/delete_event.rb +7 -8
- data/lib/pg_eventstore/commands/delete_stream.rb +3 -3
- data/lib/pg_eventstore/commands/event_modifiers/prepare_link_event.rb +11 -6
- data/lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb +12 -7
- data/lib/pg_eventstore/commands/link_to.rb +9 -9
- data/lib/pg_eventstore/commands/multiple.rb +2 -2
- data/lib/pg_eventstore/commands/read.rb +23 -5
- data/lib/pg_eventstore/commands/read_grouped.rb +46 -0
- data/lib/pg_eventstore/commands/read_streams.rb +18 -0
- data/lib/pg_eventstore/commands/read_streams_paginated.rb +56 -0
- data/lib/pg_eventstore/commands/regular_stream_read_paginated.rb +4 -4
- data/lib/pg_eventstore/commands/revision_check/current_revision.rb +51 -0
- data/lib/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rb +46 -0
- data/lib/pg_eventstore/commands/revision_check/expected_revision.rb +135 -0
- data/lib/pg_eventstore/commands/revision_check/stream_revision_check.rb +98 -0
- data/lib/pg_eventstore/commands/revision_check/stream_revision_comparison.rb +36 -0
- data/lib/pg_eventstore/commands/stream_revision.rb +14 -0
- data/lib/pg_eventstore/commands/system_stream_read_paginated.rb +4 -4
- data/lib/pg_eventstore/commands.rb +4 -2
- data/lib/pg_eventstore/config.rb +30 -9
- data/lib/pg_eventstore/connection.rb +22 -37
- data/lib/pg_eventstore/errors.rb +137 -11
- data/lib/pg_eventstore/event.rb +39 -7
- data/lib/pg_eventstore/event_deserializer.rb +5 -4
- data/lib/pg_eventstore/event_global_index.rb +118 -0
- data/lib/pg_eventstore/event_marker.rb +16 -0
- data/lib/pg_eventstore/event_marker_index.rb +25 -0
- data/lib/pg_eventstore/event_serializer.rb +6 -0
- data/lib/pg_eventstore/extensions/acts_as_configurable.rb +88 -0
- data/lib/pg_eventstore/extensions/options_defaults.rb +25 -0
- data/lib/pg_eventstore/extensions/options_extension.rb +42 -13
- data/lib/pg_eventstore/feature_marker.rb +18 -0
- data/lib/pg_eventstore/maintenance.rb +11 -6
- data/lib/pg_eventstore/middleware/event_tracing.rb +53 -0
- data/lib/pg_eventstore/partition.rb +6 -0
- data/lib/pg_eventstore/pg_connection.rb +70 -14
- data/lib/pg_eventstore/queries/event_marker_queries.rb +74 -0
- data/lib/pg_eventstore/queries/event_queries.rb +9 -95
- data/lib/pg_eventstore/queries/events_global_index_queries.rb +131 -0
- data/lib/pg_eventstore/queries/index_filtering_queries.rb +179 -0
- data/lib/pg_eventstore/queries/links_resolver.rb +10 -7
- data/lib/pg_eventstore/queries/maintenance_queries.rb +159 -42
- data/lib/pg_eventstore/queries/partition_queries.rb +46 -104
- data/lib/pg_eventstore/queries/replica_queries.rb +110 -0
- data/lib/pg_eventstore/queries/streams_global_index_queries.rb +163 -0
- data/lib/pg_eventstore/queries/transaction_queries.rb +58 -10
- data/lib/pg_eventstore/queries.rb +29 -1
- data/lib/pg_eventstore/query_builders/basic_filtering.rb +38 -5
- data/lib/pg_eventstore/query_builders/event_markers_filtering.rb +47 -0
- data/lib/pg_eventstore/query_builders/event_markers_index_filtering.rb +275 -0
- data/lib/pg_eventstore/query_builders/event_subscription_positions_filtering.rb +37 -0
- data/lib/pg_eventstore/query_builders/events_filtering.rb +15 -164
- data/lib/pg_eventstore/query_builders/events_global_index_filtering.rb +227 -0
- data/lib/pg_eventstore/query_builders/filters/collection.rb +324 -0
- data/lib/pg_eventstore/query_builders/filters/event_type_filter.rb +37 -0
- data/lib/pg_eventstore/query_builders/filters/filter_row.rb +54 -0
- data/lib/pg_eventstore/query_builders/filters/marker_filter.rb +20 -0
- data/lib/pg_eventstore/query_builders/filters/marker_filter_row.rb +49 -0
- data/lib/pg_eventstore/query_builders/filters/stream_filter.rb +48 -0
- data/lib/pg_eventstore/query_builders/index_based_events_filtering.rb +260 -0
- data/lib/pg_eventstore/query_builders/partitions_filtering.rb +175 -51
- data/lib/pg_eventstore/query_builders/read_cursor/stream_cursor.rb +122 -0
- data/lib/pg_eventstore/query_builders/streams_global_index_filtering.rb +83 -0
- data/lib/pg_eventstore/query_builders/subscription_events_filtering.rb +79 -0
- data/lib/pg_eventstore/query_strategy/async.rb +64 -0
- data/lib/pg_eventstore/query_strategy/foreground.rb +25 -0
- data/lib/pg_eventstore/query_strategy.rb +19 -0
- data/lib/pg_eventstore/raw_event.rb +46 -0
- data/lib/pg_eventstore/rspec/test_helpers.rb +21 -8
- data/lib/pg_eventstore/sql_builder.rb +87 -8
- data/lib/pg_eventstore/stream.rb +14 -17
- data/lib/pg_eventstore/stream_global_index.rb +28 -0
- data/lib/pg_eventstore/subscriptions/basic_runner.rb +4 -4
- data/lib/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rb +5 -17
- data/lib/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rb +36 -0
- data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rb +13 -1
- data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +19 -14
- data/lib/pg_eventstore/subscriptions/events_processor.rb +21 -19
- data/lib/pg_eventstore/subscriptions/events_processor_consumer/multiple.rb +63 -0
- data/lib/pg_eventstore/subscriptions/events_processor_consumer/replica.rb +68 -0
- data/lib/pg_eventstore/subscriptions/events_processor_consumer/single.rb +62 -0
- data/lib/pg_eventstore/subscriptions/events_processor_consumer.rb +44 -0
- data/lib/pg_eventstore/subscriptions/events_subscription_position_worker.rb +68 -0
- data/lib/pg_eventstore/subscriptions/queries/event_subscription_position_queries.rb +177 -0
- data/lib/pg_eventstore/subscriptions/queries/subscription_command_queries.rb +5 -5
- data/lib/pg_eventstore/subscriptions/queries/subscription_queries.rb +80 -56
- data/lib/pg_eventstore/subscriptions/queries/subscriptions_set_command_queries.rb +2 -2
- data/lib/pg_eventstore/subscriptions/queries/subscriptions_set_queries.rb +1 -1
- data/lib/pg_eventstore/subscriptions/replica_subscription_handler.rb +140 -0
- data/lib/pg_eventstore/subscriptions/replica_subscription_runner.rb +9 -0
- data/lib/pg_eventstore/subscriptions/subscription.rb +9 -7
- data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/collection.rb +36 -0
- data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/index_read_strategy.rb +82 -0
- data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/replication_strategy.rb +75 -0
- data/lib/pg_eventstore/subscriptions/subscription_feed_strategy.rb +31 -0
- data/lib/pg_eventstore/subscriptions/subscription_feeder.rb +26 -2
- data/lib/pg_eventstore/subscriptions/subscription_handler_performance.rb +5 -5
- data/lib/pg_eventstore/subscriptions/subscription_runner.rb +20 -22
- data/lib/pg_eventstore/subscriptions/subscription_runner_commands/reset_position.rb +1 -1
- data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +10 -11
- data/lib/pg_eventstore/subscriptions/subscriptions_lifecycle.rb +0 -12
- data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +84 -29
- data/lib/pg_eventstore/{subscriptions/synchronized_array.rb → synchronized_array.rb} +15 -0
- data/lib/pg_eventstore/tasks/setup.rake +32 -33
- data/lib/pg_eventstore/utils.rb +39 -0
- data/lib/pg_eventstore/version.rb +1 -1
- data/lib/pg_eventstore/web/application.rb +104 -20
- data/lib/pg_eventstore/web/paginator/base_collection.rb +5 -1
- data/lib/pg_eventstore/web/paginator/event_types_collection.rb +14 -4
- data/lib/pg_eventstore/web/paginator/events_collection.rb +29 -33
- data/lib/pg_eventstore/web/paginator/helpers.rb +19 -12
- data/lib/pg_eventstore/web/paginator/markers_collection.rb +48 -0
- data/lib/pg_eventstore/web/paginator/stream_contexts_collection.rb +13 -2
- data/lib/pg_eventstore/web/paginator/stream_ids_collection.rb +21 -11
- data/lib/pg_eventstore/web/paginator/stream_names_collection.rb +18 -4
- data/lib/pg_eventstore/web/paginator/streams_collection.rb +95 -0
- data/lib/pg_eventstore/web/public/javascripts/pg_eventstore.js +49 -22
- data/lib/pg_eventstore/web/subscriptions/helpers.rb +2 -2
- data/lib/pg_eventstore/web/subscriptions/set_collection.rb +1 -1
- data/lib/pg_eventstore/web/subscriptions/subscriptions.rb +1 -1
- data/lib/pg_eventstore/web/subscriptions/with_state/set_collection.rb +1 -1
- data/lib/pg_eventstore/web/subscriptions/with_state/subscriptions.rb +1 -1
- data/lib/pg_eventstore/web/views/home/dashboard.erb +11 -9
- data/lib/pg_eventstore/web/views/home/partials/event_filter.erb +18 -5
- data/lib/pg_eventstore/web/views/home/partials/events.erb +38 -1
- data/lib/pg_eventstore/web/views/home/partials/markers_filter.erb +18 -0
- data/lib/pg_eventstore/web/views/layouts/application.erb +6 -0
- data/lib/pg_eventstore/web/views/streams/index.erb +110 -0
- data/lib/pg_eventstore/web/views/streams/partials/streams.erb +11 -0
- data/lib/pg_eventstore/web/views/subscriptions/index.erb +4 -1
- data/lib/pg_eventstore/web.rb +2 -0
- data/lib/pg_eventstore.rb +26 -63
- data/pg_eventstore.gemspec +6 -4
- data/sig/interfaces/_raw_events_handler.rbs +3 -0
- data/sig/interfaces/subscription_handler.rbs +1 -1
- data/sig/pg/result.rbs +9 -0
- data/sig/pg_eventstore/async_runner.rbs +13 -0
- data/sig/pg_eventstore/basic_config.rbs +9 -0
- data/sig/pg_eventstore/chunks/chunk.rbs +13 -0
- data/sig/pg_eventstore/chunks/read_api_events_index_chunk.rbs +30 -0
- data/sig/pg_eventstore/chunks/replica_events_index_chunk.rbs +11 -0
- data/sig/pg_eventstore/chunks/repository.rbs +22 -0
- data/sig/pg_eventstore/chunks/subscription_checkpoint_chunk.rbs +18 -0
- data/sig/pg_eventstore/chunks/subscription_events_index_chunk.rbs +37 -0
- data/sig/pg_eventstore/client.rbs +41 -43
- data/sig/pg_eventstore/commands/append.rbs +11 -25
- data/sig/pg_eventstore/commands/event_modifiers/prepare_link_event.rbs +9 -12
- data/sig/pg_eventstore/commands/event_modifiers/prepare_regular_event.rbs +5 -4
- data/sig/pg_eventstore/commands/link_to.rbs +6 -11
- data/sig/pg_eventstore/commands/multiple.rbs +1 -1
- data/sig/pg_eventstore/commands/read.rbs +2 -5
- data/sig/pg_eventstore/commands/read_grouped.rbs +7 -0
- data/sig/pg_eventstore/commands/read_streams.rbs +7 -0
- data/sig/pg_eventstore/commands/read_streams_paginated.rbs +16 -0
- data/sig/pg_eventstore/commands/regular_stream_read_paginated.rbs +9 -17
- data/sig/pg_eventstore/commands/revision_check/current_revision.rbs +25 -0
- data/sig/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rbs +14 -0
- data/sig/pg_eventstore/commands/revision_check/expected_revision.rbs +67 -0
- data/sig/pg_eventstore/commands/revision_check/stream_revision_check.rbs +20 -0
- data/sig/pg_eventstore/commands/revision_check/stream_revision_comparison.rbs +9 -0
- data/sig/pg_eventstore/commands/stream_revision.rbs +7 -0
- data/sig/pg_eventstore/commands/system_stream_read_paginated.rbs +9 -14
- data/sig/pg_eventstore/config.rbs +15 -6
- data/sig/pg_eventstore/connection.rbs +11 -18
- data/sig/pg_eventstore/errors.rbs +64 -34
- data/sig/pg_eventstore/event.rbs +20 -6
- data/sig/pg_eventstore/event_deserializer.rbs +5 -10
- data/sig/pg_eventstore/event_global_index.rbs +60 -0
- data/sig/pg_eventstore/event_marker.rbs +9 -0
- data/sig/pg_eventstore/event_marker_index.rbs +12 -0
- data/sig/pg_eventstore/extensions/acts_as_configurable.rbs +29 -0
- data/sig/pg_eventstore/extensions/options_defaults.rbs +7 -0
- data/sig/pg_eventstore/extensions/options_extension.rbs +9 -1
- data/sig/pg_eventstore/feature_marker.rbs +10 -0
- data/sig/pg_eventstore/maintenance.rbs +12 -8
- data/sig/pg_eventstore/middleware/event_trace.rbs +14 -0
- data/sig/pg_eventstore/partition.rbs +2 -4
- data/sig/pg_eventstore/pg_connection.rbs +8 -0
- data/sig/pg_eventstore/queries/event_marker_queries.rbs +21 -0
- data/sig/pg_eventstore/queries/event_queries.rbs +6 -38
- data/sig/pg_eventstore/queries/events_global_index_queries.rbs +37 -0
- data/sig/pg_eventstore/queries/index_filtering_queries.rbs +50 -0
- data/sig/pg_eventstore/queries/links_resolver.rbs +7 -11
- data/sig/pg_eventstore/queries/maintenance_queries.rbs +12 -9
- data/sig/pg_eventstore/queries/partition_queries.rbs +32 -67
- data/sig/pg_eventstore/queries/replica_queries.rbs +31 -0
- data/sig/pg_eventstore/queries/streams_global_index_queries.rbs +39 -0
- data/sig/pg_eventstore/queries/transaction_queries.rbs +4 -2
- data/sig/pg_eventstore/queries.rbs +11 -21
- data/sig/pg_eventstore/query_builders/basic_filtering.rbs +10 -3
- data/sig/pg_eventstore/query_builders/event_markers_filtering.rbs +17 -0
- data/sig/pg_eventstore/query_builders/event_markers_index_filtering.rbs +69 -0
- data/sig/pg_eventstore/query_builders/event_subscription_positions_filtering.rbs +15 -0
- data/sig/pg_eventstore/query_builders/events_filtering_query.rbs +9 -51
- data/sig/pg_eventstore/query_builders/events_global_index_filtering.rbs +68 -0
- data/sig/pg_eventstore/query_builders/filters/collection.rbs +84 -0
- data/sig/pg_eventstore/query_builders/filters/event_type_filter.rbs +19 -0
- data/sig/pg_eventstore/query_builders/filters/filter_row.rbs +21 -0
- data/sig/pg_eventstore/query_builders/filters/marker_filter.rbs +13 -0
- data/sig/pg_eventstore/query_builders/filters/marker_filter_row.rbs +19 -0
- data/sig/pg_eventstore/query_builders/filters/stream_filter.rbs +24 -0
- data/sig/pg_eventstore/query_builders/index_based_events_filtering.rbs +60 -0
- data/sig/pg_eventstore/query_builders/partitions_filtering.rbs +29 -10
- data/sig/pg_eventstore/query_builders/read_cursor/stream_cursor.rbs +47 -0
- data/sig/pg_eventstore/query_builders/streams_global_index_filtering.rbs +27 -0
- data/sig/pg_eventstore/query_builders/subscription_events_filtering.rbs +26 -0
- data/sig/pg_eventstore/query_strategy/async.rbs +17 -0
- data/sig/pg_eventstore/query_strategy/foreground.rbs +11 -0
- data/sig/pg_eventstore/query_strategy.rbs +7 -0
- data/sig/pg_eventstore/raw_event.rbs +20 -0
- data/sig/pg_eventstore/sql_builder.rbs +32 -10
- data/sig/pg_eventstore/stream.rbs +10 -18
- data/sig/pg_eventstore/stream_global_index.rbs +14 -0
- data/sig/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rbs +5 -4
- data/sig/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rbs +9 -0
- data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rbs +17 -12
- data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rbs +16 -8
- data/sig/pg_eventstore/subscriptions/event_subscription_position_queries.rbs +30 -0
- data/sig/pg_eventstore/subscriptions/events_processor.rbs +12 -5
- data/sig/pg_eventstore/subscriptions/events_processor_consumer/multiple.rbs +17 -0
- data/sig/pg_eventstore/subscriptions/events_processor_consumer/replica.rbs +17 -0
- data/sig/pg_eventstore/subscriptions/events_processor_consumer/single.rbs +17 -0
- data/sig/pg_eventstore/subscriptions/events_processor_consumer.rbs +14 -0
- data/sig/pg_eventstore/subscriptions/events_subscription_position_worker.rbs +28 -0
- data/sig/pg_eventstore/subscriptions/queries/subscription_queries.rbs +18 -50
- data/sig/pg_eventstore/subscriptions/replica_subscription_handler.rbs +33 -0
- data/sig/pg_eventstore/subscriptions/replica_subscription_runner.rbs +4 -0
- data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/collection.rbs +14 -0
- data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/index_read_strategy.rbs +23 -0
- data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/replication_strategy.rbs +23 -0
- data/sig/pg_eventstore/subscriptions/subscription_feed_strategy.rbs +11 -0
- data/sig/pg_eventstore/subscriptions/subscription_feeder.rbs +13 -10
- data/sig/pg_eventstore/subscriptions/subscription_handler_performance.rbs +1 -1
- data/sig/pg_eventstore/subscriptions/subscription_runner.rbs +13 -5
- data/sig/pg_eventstore/subscriptions/subscription_runners_feeder.rbs +5 -5
- data/sig/pg_eventstore/subscriptions/subscriptions_lifecycle.rbs +4 -6
- data/sig/pg_eventstore/subscriptions/subscriptions_manager.rbs +29 -43
- data/sig/pg_eventstore/synchronized_array.rbs +4 -0
- data/sig/pg_eventstore/utils.rbs +18 -11
- data/sig/pg_eventstore/web/application.rbs +13 -3
- data/sig/pg_eventstore/web/paginator/base_collection.rbs +2 -0
- data/sig/pg_eventstore/web/paginator/event_types_collection.rbs +4 -0
- data/sig/pg_eventstore/web/paginator/events_collection.rbs +11 -11
- data/sig/pg_eventstore/web/paginator/helpers.rbs +6 -15
- data/sig/pg_eventstore/web/paginator/markers_collection.rbs +13 -0
- data/sig/pg_eventstore/web/paginator/stream_contexts_collection.rbs +4 -0
- data/sig/pg_eventstore/web/paginator/stream_names_collection.rbs +4 -0
- data/sig/pg_eventstore/web/paginator/streams_collection.rbs +30 -0
- data/sig/pg_eventstore.rbs +8 -26
- metadata +181 -21
- data/lib/pg_eventstore/commands/all_stream_read_grouped.rb +0 -69
- data/lib/pg_eventstore/commands/regular_stream_read_grouped.rb +0 -31
- data/lib/pg_eventstore/subscriptions/queries/service_queries.rb +0 -73
- data/lib/pg_eventstore/subscriptions/subscription_position_evaluation.rb +0 -195
- data/lib/pg_eventstore/web/views/home/partials/system_stream_filter.erb +0 -15
- data/sig/pg_eventstore/commands/all_stream_read_grouped.rbs +0 -16
- data/sig/pg_eventstore/commands/regular_stream_read_grouped.rbs +0 -8
- data/sig/pg_eventstore/subscriptions/queries/service_queries.rbs +0 -15
- data/sig/pg_eventstore/subscriptions/subscription_position_evaluation.rbs +0 -53
- data/sig/pg_eventstore/subscriptions/synchronized_array.rbs +0 -4
- /data/sig/interfaces/{_raw_event_handler.rbs → raw_event_handler.rbs} +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
module Filters
|
|
4
|
+
class MarkerFilter
|
|
5
|
+
include Extensions::OptionsExtension
|
|
6
|
+
include Extensions::OptionsDefaults
|
|
7
|
+
|
|
8
|
+
attr_accessor markers: Array[String]
|
|
9
|
+
attr_accessor event_type: String?
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
module Filters
|
|
4
|
+
class MarkerFilterRow
|
|
5
|
+
include Extensions::OptionsExtension
|
|
6
|
+
include Extensions::OptionsDefaults
|
|
7
|
+
|
|
8
|
+
attr_accessor stream_filter: QueryBuilders::Filters::StreamFilter?
|
|
9
|
+
attr_accessor marker_filter: QueryBuilders::Filters::MarkerFilter
|
|
10
|
+
|
|
11
|
+
def ambiguous_event_type?: -> bool
|
|
12
|
+
|
|
13
|
+
def flatten: -> Array[QueryBuilders::Filters::MarkerFilterRow]
|
|
14
|
+
|
|
15
|
+
def to_filter_row: -> FilterRow
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
module Filters
|
|
4
|
+
class StreamFilter
|
|
5
|
+
include Extensions::OptionsExtension
|
|
6
|
+
include Extensions::OptionsDefaults
|
|
7
|
+
|
|
8
|
+
attr_accessor context: String
|
|
9
|
+
attr_accessor stream_name: String?
|
|
10
|
+
attr_accessor stream_id: String?
|
|
11
|
+
|
|
12
|
+
def context?: -> bool
|
|
13
|
+
|
|
14
|
+
def stream?: -> bool
|
|
15
|
+
|
|
16
|
+
def stream_name?: -> bool
|
|
17
|
+
|
|
18
|
+
def to_h: -> Hash[Symbol, String]
|
|
19
|
+
|
|
20
|
+
def to_partition_h: -> Hash[Symbol, String?]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
class IndexBasedEventsFiltering
|
|
4
|
+
include BasicFiltering
|
|
5
|
+
|
|
6
|
+
ABSTRACT_TABLE_NAME: String
|
|
7
|
+
DEFAULT_LIMIT: Integer
|
|
8
|
+
|
|
9
|
+
@sql_builder: SQLBuilder
|
|
10
|
+
|
|
11
|
+
def self.sql_builder_for_estimate_count: (
|
|
12
|
+
Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows
|
|
13
|
+
) -> SQLBuilder
|
|
14
|
+
|
|
15
|
+
def self.sql_builder_for_event_type_revision_validation: (
|
|
16
|
+
Stream stream,
|
|
17
|
+
Commands::RevisionCheck::ExpectedRevision::EventTypeRevision expected_revision
|
|
18
|
+
) -> SQLBuilder
|
|
19
|
+
|
|
20
|
+
def self.sql_builder_for_event_type_with_markers_revision_validation: (
|
|
21
|
+
Stream stream,
|
|
22
|
+
Commands::RevisionCheck::ExpectedRevision::EventTypeRevisionWithMarkers expected_revision
|
|
23
|
+
) -> SQLBuilder
|
|
24
|
+
|
|
25
|
+
def self.sql_builder_for_markers_revision_validation: (
|
|
26
|
+
Stream stream,
|
|
27
|
+
Commands::RevisionCheck::ExpectedRevision::MarkersRevision expected_revision
|
|
28
|
+
) -> SQLBuilder
|
|
29
|
+
|
|
30
|
+
def self.sql_builder_for_read_common: (
|
|
31
|
+
Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows,
|
|
32
|
+
ReadCursor::StreamCursor cursor
|
|
33
|
+
) -> SQLBuilder
|
|
34
|
+
|
|
35
|
+
def self.sql_builder_for_read_grouped: (
|
|
36
|
+
Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows,
|
|
37
|
+
ReadCursor::StreamCursor cursor
|
|
38
|
+
) -> SQLBuilder
|
|
39
|
+
|
|
40
|
+
def self.sql_builder_for_subscriptions: (
|
|
41
|
+
Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows
|
|
42
|
+
) -> SQLBuilder
|
|
43
|
+
|
|
44
|
+
def add_global_position_direction: ((String | Symbol)? direction) -> void
|
|
45
|
+
|
|
46
|
+
def add_limit: (Integer? limit) -> void
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def self.finalize_subscription_builders: (Array[SQLBuilder] builders) -> SQLBuilder
|
|
51
|
+
|
|
52
|
+
def self.union_builders: (
|
|
53
|
+
Array[SQLBuilder] builders,
|
|
54
|
+
QueryBuilders::ReadCursor::StreamCursor cursor,
|
|
55
|
+
mode: Symbol,
|
|
56
|
+
?requires_limit: bool
|
|
57
|
+
) -> SQLBuilder
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -1,25 +1,44 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
module QueryBuilders
|
|
3
|
-
class PartitionsFiltering
|
|
3
|
+
class PartitionsFiltering
|
|
4
|
+
include BasicFiltering
|
|
5
|
+
|
|
4
6
|
TABLE_NAME: String
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
@has_event_types: Array[bool]
|
|
9
|
+
@has_stream_names: Array[bool]
|
|
10
|
+
@sql_builder: SQLBuilder
|
|
11
|
+
@wants_event_type: bool
|
|
12
|
+
@wants_stream_name: bool
|
|
13
|
+
|
|
14
|
+
def self.assemble_sql_builder: (Filters::Collection filters_collection,
|
|
15
|
+
?scope: Symbol) -> SQLBuilder
|
|
16
|
+
|
|
17
|
+
def self.from_filter_row: (Filters::FilterRow filter_row,
|
|
18
|
+
?scope: Symbol) -> SQLBuilder
|
|
19
|
+
|
|
20
|
+
def add_filter_row: (Filters::FilterRow filter_row) -> void
|
|
21
|
+
|
|
22
|
+
def order_by_context: -> void
|
|
23
|
+
|
|
24
|
+
def order_by_event_type: -> void
|
|
7
25
|
|
|
8
|
-
def
|
|
26
|
+
def order_by_stream_name: -> void
|
|
9
27
|
|
|
10
|
-
def
|
|
28
|
+
def with_event_types: -> void
|
|
11
29
|
|
|
12
|
-
def
|
|
30
|
+
def with_stream_names: -> void
|
|
13
31
|
|
|
14
|
-
def
|
|
32
|
+
def without_event_types: -> void
|
|
15
33
|
|
|
16
|
-
def
|
|
34
|
+
def without_stream_names: -> void
|
|
17
35
|
|
|
18
|
-
|
|
36
|
+
private
|
|
19
37
|
|
|
20
|
-
def
|
|
38
|
+
def self.has_stream_name_filter?: (Filters::Collection filters_collection) -> bool
|
|
21
39
|
|
|
22
|
-
def
|
|
40
|
+
def self.set_partitions_scope: (PartitionsFiltering partitions_filtering, bool has_stream_name_filters,
|
|
41
|
+
bool has_event_type_filters, Symbol scope) -> untyped
|
|
23
42
|
end
|
|
24
43
|
end
|
|
25
44
|
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
module ReadCursor
|
|
4
|
+
class StreamCursor
|
|
5
|
+
class RegularStreamCursor
|
|
6
|
+
include Extensions::OptionsExtension
|
|
7
|
+
include Extensions::OptionsDefaults
|
|
8
|
+
|
|
9
|
+
attr_accessor from_revision: Integer?
|
|
10
|
+
attr_accessor to_revision: Integer?
|
|
11
|
+
attr_accessor direction: String? | Symbol?
|
|
12
|
+
attr_accessor max_count: Integer?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class AllStreamCursor
|
|
16
|
+
include Extensions::OptionsExtension
|
|
17
|
+
include Extensions::OptionsDefaults
|
|
18
|
+
|
|
19
|
+
attr_accessor from_position: Integer?
|
|
20
|
+
attr_accessor to_position: Integer?
|
|
21
|
+
attr_accessor direction: String? | Symbol?
|
|
22
|
+
attr_accessor max_count: Integer?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@cursor: RegularStreamCursor | AllStreamCursor
|
|
26
|
+
|
|
27
|
+
def self.from_options: (Hash[untyped, untyped] options) -> StreamCursor
|
|
28
|
+
|
|
29
|
+
def self.from_stream_and_options: (Stream stream, Hash[untyped, untyped] options) -> StreamCursor
|
|
30
|
+
|
|
31
|
+
def initialize: (RegularStreamCursor | AllStreamCursor cursor) -> void
|
|
32
|
+
|
|
33
|
+
def direction: -> (String | Symbol)?
|
|
34
|
+
|
|
35
|
+
def from: -> Integer?
|
|
36
|
+
|
|
37
|
+
def max_count: -> Integer?
|
|
38
|
+
|
|
39
|
+
def max_count=: (Integer? val) -> void
|
|
40
|
+
|
|
41
|
+
def all_stream_cursor?: -> bool
|
|
42
|
+
|
|
43
|
+
def to: -> Integer?
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
class StreamsGlobalIndexFiltering
|
|
4
|
+
DEFAULT_LIMIT: Integer
|
|
5
|
+
|
|
6
|
+
PRIMARY_TABLE_NAME: String
|
|
7
|
+
|
|
8
|
+
include BasicFiltering
|
|
9
|
+
|
|
10
|
+
@sql_builder: SQLBuilder
|
|
11
|
+
|
|
12
|
+
def self.sql_builder_for_basic_pagination: (Hash[untyped, untyped] options) -> SQLBuilder
|
|
13
|
+
|
|
14
|
+
def add_filter_row: (Filters::FilterRow filter_row) -> void
|
|
15
|
+
|
|
16
|
+
def add_starting_position_direction: (Symbol? | String? direction) -> void
|
|
17
|
+
|
|
18
|
+
def from_position: (Integer? position, Symbol? | String? direction) -> void
|
|
19
|
+
|
|
20
|
+
def limit: (Integer? limit) -> void
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def direction_operator_from: (Symbol? | String? direction) -> String
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryBuilders
|
|
3
|
+
class SubscriptionEventsFiltering
|
|
4
|
+
include BasicFiltering
|
|
5
|
+
|
|
6
|
+
@from_position: Integer
|
|
7
|
+
@max_count: Integer
|
|
8
|
+
@sql_builder: SQLBuilder
|
|
9
|
+
@subscription_id: Integer
|
|
10
|
+
@to_position: Integer
|
|
11
|
+
|
|
12
|
+
def self.build: (
|
|
13
|
+
Integer id,
|
|
14
|
+
{ from_position: Integer, to_position: Integer, max_count: Integer } options
|
|
15
|
+
) -> SubscriptionEventsFiltering
|
|
16
|
+
|
|
17
|
+
def initialize: (Integer subscription_id) -> void
|
|
18
|
+
|
|
19
|
+
def add_limit: (Integer? limit) -> void
|
|
20
|
+
|
|
21
|
+
def from_position: (Integer? position) -> void
|
|
22
|
+
|
|
23
|
+
def to_position: (Integer? position) -> void
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module QueryStrategy
|
|
3
|
+
class Async
|
|
4
|
+
include QueryStrategy
|
|
5
|
+
|
|
6
|
+
@connection: Connection
|
|
7
|
+
|
|
8
|
+
def initialize: (Connection connection) -> void
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def cancel_and_drain: (PG::Connection connection) -> void
|
|
13
|
+
|
|
14
|
+
def run: (Symbol method, *untyped exec_args) -> untyped
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
# @!visibility private
|
|
3
|
+
class RawEvent
|
|
4
|
+
include Extensions::OptionsExtension
|
|
5
|
+
include Extensions::OptionsDefaults
|
|
6
|
+
|
|
7
|
+
attr_accessor id: String
|
|
8
|
+
attr_accessor context: String
|
|
9
|
+
attr_accessor stream_name: String
|
|
10
|
+
attr_accessor stream_id: String
|
|
11
|
+
attr_accessor global_position: Integer
|
|
12
|
+
attr_accessor stream_revision: Integer
|
|
13
|
+
attr_accessor data: Hash[untyped, untyped]
|
|
14
|
+
attr_accessor metadata: Hash[untyped, untyped]
|
|
15
|
+
attr_accessor link_partition_id: Integer?
|
|
16
|
+
attr_accessor created_at: Time
|
|
17
|
+
attr_accessor type: String
|
|
18
|
+
attr_accessor link_global_position: Integer?
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class SQLBuilder
|
|
3
|
+
UNION_MODES: Array[Symbol]
|
|
4
|
+
|
|
5
|
+
@from_value: (String | SQLBuilder)?
|
|
6
|
+
@group_values: Array[String]
|
|
7
|
+
@join_values: Array[untyped]
|
|
8
|
+
@limit_value: String? | Integer?
|
|
9
|
+
@offset_value: Integer?
|
|
10
|
+
@order_values: Array[String]
|
|
11
|
+
@select_values: Array[String]
|
|
12
|
+
@union_mode: Symbol
|
|
13
|
+
@union_values: Array[SQLBuilder]
|
|
14
|
+
@where_values: Hash[String, Array[untyped]]
|
|
15
|
+
|
|
16
|
+
def self.union_builders: (Array[SQLBuilder] builders, ?mode: Symbol) -> SQLBuilder
|
|
17
|
+
|
|
18
|
+
def self.wrap_union_builder: (SQLBuilder builder) -> SQLBuilder
|
|
19
|
+
|
|
20
|
+
attr_reader positional_values: Array[untyped]
|
|
21
|
+
attr_reader table_alias: String?
|
|
22
|
+
|
|
23
|
+
attr_writer positional_values_size: Integer
|
|
24
|
+
|
|
3
25
|
def initialize: () -> void
|
|
4
26
|
|
|
5
27
|
def from_sql: -> String
|
|
@@ -7,6 +29,12 @@ module PgEventstore
|
|
|
7
29
|
# _@param_ `sql`
|
|
8
30
|
def select: (String sql) -> self
|
|
9
31
|
|
|
32
|
+
def select_id_only: -> self
|
|
33
|
+
|
|
34
|
+
def union_builder?: -> bool
|
|
35
|
+
|
|
36
|
+
def union_mode=: (Symbol val) -> void
|
|
37
|
+
|
|
10
38
|
def unselect: () -> self
|
|
11
39
|
|
|
12
40
|
# _@param_ `sql`
|
|
@@ -19,8 +47,7 @@ module PgEventstore
|
|
|
19
47
|
# _@param_ `arguments` — positional values
|
|
20
48
|
def where_or: (String sql, *Object arguments) -> self
|
|
21
49
|
|
|
22
|
-
|
|
23
|
-
def from: (String | SQLBuilder table_name) -> self
|
|
50
|
+
def from: (String | SQLBuilder table_name, ?table_alias: String?) -> self
|
|
24
51
|
|
|
25
52
|
# _@param_ `sql`
|
|
26
53
|
#
|
|
@@ -33,7 +60,7 @@ module PgEventstore
|
|
|
33
60
|
def remove_order: () -> self
|
|
34
61
|
|
|
35
62
|
# _@param_ `limit`
|
|
36
|
-
def limit: (Integer limit) -> self
|
|
63
|
+
def limit: (String | Integer limit) -> self
|
|
37
64
|
|
|
38
65
|
def remove_limit: () -> self
|
|
39
66
|
|
|
@@ -41,7 +68,7 @@ module PgEventstore
|
|
|
41
68
|
def offset: (Integer offset) -> self
|
|
42
69
|
|
|
43
70
|
# _@param_ `another_builder`
|
|
44
|
-
def union: (
|
|
71
|
+
def union: (SQLBuilder another_builder) -> self
|
|
45
72
|
|
|
46
73
|
# _@param_ `sql`
|
|
47
74
|
def group: (String sql) -> self
|
|
@@ -50,11 +77,6 @@ module PgEventstore
|
|
|
50
77
|
|
|
51
78
|
def to_exec_params: () -> [String, ::Array[untyped]]
|
|
52
79
|
|
|
53
|
-
def positional_values: () -> ::Array[Object]
|
|
54
|
-
|
|
55
|
-
# _@param_ `val`
|
|
56
|
-
def positional_values_size=: (Integer val) -> Integer
|
|
57
|
-
|
|
58
80
|
def _to_exec_params: () -> [String, ::Array[untyped]]
|
|
59
81
|
|
|
60
82
|
def single_query_sql: () -> String
|
|
@@ -75,6 +97,6 @@ module PgEventstore
|
|
|
75
97
|
|
|
76
98
|
private
|
|
77
99
|
|
|
78
|
-
def merge: (SQLBuilder builder)-> String
|
|
100
|
+
def merge: (SQLBuilder builder) -> String
|
|
79
101
|
end
|
|
80
102
|
end
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class Stream
|
|
3
3
|
KNOWN_SYSTEM_STREAMS: Array[String]
|
|
4
|
-
SYSTEM_STREAM_PREFIX: String
|
|
5
4
|
NON_EXISTING_STREAM_REVISION: Integer
|
|
6
5
|
|
|
7
|
-
def self.all_stream: () ->
|
|
6
|
+
def self.all_stream: () -> Stream
|
|
8
7
|
|
|
9
|
-
def self.system_stream: (String) ->
|
|
8
|
+
def self.system_stream: (String) -> Stream
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
attr_reader context: String
|
|
11
|
+
attr_reader stream_name: String
|
|
12
|
+
attr_reader stream_id: String
|
|
13
|
+
attr_reader stream_revision: Integer?
|
|
14
|
+
attr_reader starting_position: Integer?
|
|
15
|
+
|
|
16
|
+
def initialize: (context: String, stream_name: String, stream_id: String, ?stream_revision: Integer?,
|
|
17
|
+
?starting_position: Integer?) -> void
|
|
17
18
|
|
|
18
19
|
def all_stream?: () -> bool
|
|
19
20
|
|
|
@@ -21,23 +22,14 @@ module PgEventstore
|
|
|
21
22
|
|
|
22
23
|
def deconstruct: () -> ::Array[untyped]
|
|
23
24
|
|
|
24
|
-
# _@param_ `keys`
|
|
25
25
|
def deconstruct_keys: (::Array[Symbol]? keys) -> ::Hash[Symbol, String]
|
|
26
26
|
|
|
27
27
|
def to_hash: () -> ::Hash[untyped, untyped]
|
|
28
28
|
|
|
29
29
|
def hash: () -> Integer
|
|
30
30
|
|
|
31
|
-
# _@param_ `another`
|
|
32
31
|
def eql?: (untyped another) -> bool
|
|
33
32
|
|
|
34
|
-
# _@param_ `other_stream`
|
|
35
33
|
def ==: (untyped other_stream) -> bool
|
|
36
|
-
|
|
37
|
-
attr_accessor context: String
|
|
38
|
-
|
|
39
|
-
attr_accessor stream_name: String
|
|
40
|
-
|
|
41
|
-
attr_accessor stream_id: String
|
|
42
34
|
end
|
|
43
35
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
class StreamGlobalIndex
|
|
3
|
+
include Extensions::OptionsExtension
|
|
4
|
+
include Extensions::OptionsDefaults
|
|
5
|
+
|
|
6
|
+
INITIAL_STARTING_POSITION: Integer
|
|
7
|
+
|
|
8
|
+
attr_accessor id: Integer
|
|
9
|
+
attr_accessor partition_id: Integer
|
|
10
|
+
attr_accessor stream_id: String
|
|
11
|
+
attr_accessor stream_revision: Integer
|
|
12
|
+
attr_accessor starting_position: Integer
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class EventsProcessorHandlers
|
|
3
|
-
def self.
|
|
3
|
+
def self.consume_events: (EventsProcessorConsumer consumer, Callbacks callbacks,
|
|
4
|
+
Chunks::Repository events_repository,
|
|
4
5
|
MonitorMixin::ConditionVariable raw_events_cond) -> void
|
|
5
6
|
|
|
6
|
-
def self.after_runner_died: (
|
|
7
|
+
def self.after_runner_died: (Callbacks callbacks, StandardError error) -> void
|
|
7
8
|
|
|
8
|
-
def self.before_runner_restored: (
|
|
9
|
+
def self.before_runner_restored: (Callbacks callbacks) -> void
|
|
9
10
|
|
|
10
|
-
def self.change_state: (
|
|
11
|
+
def self.change_state: (Callbacks callbacks, String state) -> void
|
|
11
12
|
end
|
|
12
13
|
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
class EventsSubscriptionPositionWorkerHandlers
|
|
3
|
+
def self.assign_subscription_position: (EventSubscriptionPositionQueries event_subscription_position_queries,
|
|
4
|
+
Integer | Float update_interval) -> void
|
|
5
|
+
|
|
6
|
+
def self.reindex: (EventSubscriptionPositionQueries event_subscription_position_queries,
|
|
7
|
+
EventsSubscriptionPositionWorker::ReindexTime next_reindex_at) -> void
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -2,28 +2,33 @@ module PgEventstore
|
|
|
2
2
|
class SubscriptionFeederHandlers
|
|
3
3
|
include Extensions::CallbackHandlersExtension
|
|
4
4
|
|
|
5
|
-
def self.
|
|
5
|
+
def self.start_events_subscription_position_worker: (EventsSubscriptionPositionWorker worker) -> void
|
|
6
6
|
|
|
7
|
-
def self.
|
|
7
|
+
def self.stop_events_subscription_position_worker: (EventsSubscriptionPositionWorker worker) -> void
|
|
8
8
|
|
|
9
|
-
def self.
|
|
9
|
+
def self.update_subscriptions_set_state: (SubscriptionsSetLifecycle subscriptions_set_lifecycle,
|
|
10
|
+
String state) -> void
|
|
10
11
|
|
|
11
|
-
def self.
|
|
12
|
+
def self.lock_subscriptions: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
|
|
12
13
|
|
|
13
|
-
def self.
|
|
14
|
+
def self.start_runners: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
|
|
14
15
|
|
|
15
|
-
def self.
|
|
16
|
+
def self.start_cmds_handler: (CommandsHandler cmds_handler) -> void
|
|
16
17
|
|
|
17
|
-
def self.
|
|
18
|
+
def self.persist_error_info: (SubscriptionsSetLifecycle subscriptions_set_lifecycle, StandardError error) -> void
|
|
18
19
|
|
|
19
|
-
def self.
|
|
20
|
+
def self.ping_subscriptions_set: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
|
|
20
21
|
|
|
21
|
-
def self.
|
|
22
|
+
def self.feed_runners: (SubscriptionsLifecycle subscriptions_lifecycle, Symbol config_name) -> void
|
|
22
23
|
|
|
23
|
-
def self.
|
|
24
|
+
def self.ping_subscriptions: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
|
|
24
25
|
|
|
25
|
-
def self.
|
|
26
|
+
def self.stop_runners: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
|
|
26
27
|
|
|
27
|
-
def self.
|
|
28
|
+
def self.reset_subscriptions_set: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
|
|
29
|
+
|
|
30
|
+
def self.stop_commands_handler: (CommandsHandler cmds_handler) -> void
|
|
31
|
+
|
|
32
|
+
def self.update_subscriptions_set_restarts: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
|
|
28
33
|
end
|
|
29
34
|
end
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class SubscriptionRunnerHandlers
|
|
3
|
-
def self.
|
|
4
|
-
String state) -> void
|
|
3
|
+
def self.checkpoint: (Subscription subscription, Integer global_position) -> void
|
|
5
4
|
|
|
6
|
-
def self.track_exec_time: (
|
|
5
|
+
def self.track_exec_time: (
|
|
6
|
+
SubscriptionHandlerPerformance stats, ^() -> void,
|
|
7
|
+
Integer _current_position,
|
|
8
|
+
Integer events_number
|
|
9
|
+
) -> void
|
|
7
10
|
|
|
8
|
-
def self.update_subscription_stats: (
|
|
11
|
+
def self.update_subscription_stats: (
|
|
12
|
+
Subscription subscription,
|
|
13
|
+
SubscriptionHandlerPerformance stats,
|
|
14
|
+
Integer current_position,
|
|
15
|
+
Integer events_number
|
|
16
|
+
) -> void
|
|
9
17
|
|
|
10
|
-
def self.update_subscription_error: (
|
|
18
|
+
def self.update_subscription_error: (Subscription subscription, WrappedException error) -> void
|
|
11
19
|
|
|
12
|
-
def self.update_subscription_chunk_stats: (
|
|
20
|
+
def self.update_subscription_chunk_stats: (Subscription subscription, Integer subscription_position) -> void
|
|
13
21
|
|
|
14
|
-
def self.update_subscription_restarts: (
|
|
22
|
+
def self.update_subscription_restarts: (Subscription subscription) -> void
|
|
15
23
|
|
|
16
|
-
def self.update_subscription_state: (
|
|
24
|
+
def self.update_subscription_state: (Subscription subscription, String state) -> void
|
|
17
25
|
end
|
|
18
26
|
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
class EventSubscriptionPositionQueries
|
|
3
|
+
ASSIGN_SUBSCRIPTION_POSITIONS_LOCK_ID: Integer
|
|
4
|
+
MAX_INDEX_RECORDS_TO_UPDATE_SUBSCRIPTION_POSITION: Integer
|
|
5
|
+
REINDEX_PERIOD: Integer
|
|
6
|
+
UNPROCESSED_POSITIONS_INDEX_NAME: String
|
|
7
|
+
UNPROCESSED_POSITIONS_INDEX_SIZE_THRESHOLD: Integer
|
|
8
|
+
UNPROCESSED_POSITIONS_LOCK_EXPIRES_IN: Integer
|
|
9
|
+
|
|
10
|
+
attr_reader connection: Connection
|
|
11
|
+
|
|
12
|
+
def initialize: (Connection connection) -> void
|
|
13
|
+
|
|
14
|
+
def create_unprocessed_positions: (Array[Hash[String, untyped]] raw_events) -> void
|
|
15
|
+
|
|
16
|
+
def max_subscription_position: -> Integer?
|
|
17
|
+
|
|
18
|
+
def reindex_unprocessed_positions: -> Time?
|
|
19
|
+
|
|
20
|
+
def subscription_positions_from_db: (Array[Event] events) -> Hash[Integer, Integer?]
|
|
21
|
+
|
|
22
|
+
def assign_subscription_position: -> Integer?
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def index_size: (String index_name) -> Integer
|
|
27
|
+
|
|
28
|
+
def transaction_queries: -> TransactionQueries
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class EventsProcessor
|
|
3
|
-
include
|
|
3
|
+
include Extensions::CallbacksExtension
|
|
4
|
+
|
|
4
5
|
extend Forwardable
|
|
5
6
|
|
|
7
|
+
@basic_runner: BasicRunner
|
|
8
|
+
@consumer: EventsProcessorConsumer
|
|
9
|
+
@events_repository: Chunks::Repository
|
|
10
|
+
@repository_cond: MonitorMixin::ConditionVariable
|
|
11
|
+
|
|
6
12
|
%a{rbs:test:skip} def initialize: (
|
|
7
|
-
_RawEventHandler handler,
|
|
8
13
|
graceful_shutdown_timeout: Float | Integer,
|
|
14
|
+
consumer: EventsProcessorConsumer,
|
|
15
|
+
?events_repository: Chunks::Repository,
|
|
9
16
|
?recovery_strategies: Array[RunnerRecoveryStrategy]
|
|
10
17
|
) -> void
|
|
11
18
|
|
|
12
|
-
def feed: (::
|
|
19
|
+
def feed: (Chunks::Chunk[EventGlobalIndex, Hash[String, untyped]] chunk) -> void
|
|
13
20
|
|
|
14
|
-
def
|
|
21
|
+
def events_left_in_repo: () -> Integer
|
|
15
22
|
|
|
16
|
-
def
|
|
23
|
+
def clear_events_repository: () -> void
|
|
17
24
|
|
|
18
25
|
def process_event: (::Hash[untyped, untyped] raw_event) -> void
|
|
19
26
|
|