pg_eventstore 2.0.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/.rubocop.yml +10 -1
- data/CHANGELOG.md +186 -20
- data/README.md +25 -15
- data/db/migrations/10_setup_pg_cron.rb +1 -23
- 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/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 +17 -8
- 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/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/client.rb +163 -50
- 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 +9 -7
- data/lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb +12 -7
- data/lib/pg_eventstore/commands/link_to.rb +5 -5
- 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 +21 -2
- data/lib/pg_eventstore/errors.rb +136 -10
- data/lib/pg_eventstore/event.rb +34 -2
- 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 +2 -2
- 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 +7 -93
- 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 +4 -4
- data/lib/pg_eventstore/queries/maintenance_queries.rb +159 -42
- data/lib/pg_eventstore/queries/partition_queries.rb +45 -103
- 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 +52 -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 +13 -16
- data/lib/pg_eventstore/stream_global_index.rb +28 -0
- 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 +12 -0
- data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +21 -7
- data/lib/pg_eventstore/subscriptions/events_processor.rb +20 -18
- 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_queries.rb +78 -54
- 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 +2 -1
- 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 +24 -0
- data/lib/pg_eventstore/subscriptions/subscription_handler_performance.rb +4 -2
- data/lib/pg_eventstore/subscriptions/subscription_runner.rb +20 -9
- data/lib/pg_eventstore/subscriptions/subscription_runner_commands/reset_position.rb +1 -1
- data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +9 -18
- data/lib/pg_eventstore/subscriptions/subscriptions_lifecycle.rb +0 -12
- data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +74 -14
- data/lib/pg_eventstore/{subscriptions/synchronized_array.rb → synchronized_array.rb} +15 -0
- data/lib/pg_eventstore/tasks/setup.rake +2 -2
- data/lib/pg_eventstore/utils.rb +31 -0
- data/lib/pg_eventstore/version.rb +1 -1
- data/lib/pg_eventstore/web/application.rb +100 -16
- 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 +16 -9
- 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/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 +23 -60
- 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 +40 -42
- 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/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 +16 -2
- 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/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 +4 -36
- 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 +5 -9
- 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 +2 -0
- 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 +17 -6
- 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 +7 -39
- 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 -2
- data/sig/pg_eventstore/subscriptions/subscription_runners_feeder.rbs +1 -8
- 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 +10 -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 +175 -20
- data/Dockerfile +0 -3
- 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/subscription_service_queries.rb +0 -78
- 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/subscription_service_queries.rbs +0 -19
- data/sig/pg_eventstore/subscriptions/synchronized_array.rbs +0 -4
- /data/sig/interfaces/{_raw_event_handler.rbs → raw_event_handler.rbs} +0 -0
data/sig/pg/result.rbs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Chunks
|
|
3
|
+
class ReadApiEventsIndexChunk
|
|
4
|
+
include Chunk[EventGlobalIndex::ReadApiRepr, Hash[String, untyped]]
|
|
5
|
+
|
|
6
|
+
MAX_PARTITIONS_TO_RESOLVE_PER_CALL: Integer
|
|
7
|
+
|
|
8
|
+
@connection: Connection
|
|
9
|
+
@raw_events: Array[Hash[String, untyped]]
|
|
10
|
+
@idx_direction: Symbol
|
|
11
|
+
@indexes: Array[EventGlobalIndex::ReadApiRepr]
|
|
12
|
+
@query_strategy: QueryStrategy
|
|
13
|
+
@resolve_link_tos: bool
|
|
14
|
+
@resolved: bool
|
|
15
|
+
|
|
16
|
+
def initialize: (Array[EventGlobalIndex::ReadApiRepr] indexes, Connection connection,
|
|
17
|
+
QueryStrategy query_strategy, bool resolve_link_tos) -> void
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def detect_direction: (EventGlobalIndex::ReadApiRepr? idx1, EventGlobalIndex::ReadApiRepr? idx2) -> Symbol
|
|
22
|
+
|
|
23
|
+
def events_global_index_queries: -> EventsGlobalIndexQueries
|
|
24
|
+
|
|
25
|
+
def resolve_indexes: -> void
|
|
26
|
+
|
|
27
|
+
def resolved?: -> bool
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Chunks
|
|
3
|
+
class ReplicaEventsIndexChunk
|
|
4
|
+
include Chunk[EventGlobalIndex::SubscriptionRepr, EventGlobalIndex::SubscriptionRepr]
|
|
5
|
+
|
|
6
|
+
@indexes: Array[EventGlobalIndex::SubscriptionRepr]
|
|
7
|
+
|
|
8
|
+
def initialize: (Array[EventGlobalIndex::SubscriptionRepr] indexes) -> void
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Chunks
|
|
3
|
+
class Repository
|
|
4
|
+
include MonitorMixin
|
|
5
|
+
|
|
6
|
+
@chunks: SynchronizedArray[Chunk[untyped, untyped]]
|
|
7
|
+
|
|
8
|
+
def add_chunk: (Chunk[untyped, untyped] chunk, ?condition: MonitorMixin::ConditionVariable?) -> void
|
|
9
|
+
|
|
10
|
+
def clear: -> void
|
|
11
|
+
|
|
12
|
+
def consume_all: -> untyped
|
|
13
|
+
|
|
14
|
+
def empty?: -> bool
|
|
15
|
+
|
|
16
|
+
def size: -> Integer
|
|
17
|
+
|
|
18
|
+
def wait_and_consume: (entities_num: Integer?, timeout: Float | Integer,
|
|
19
|
+
condition: MonitorMixin::ConditionVariable) -> Array[untyped]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Chunks
|
|
3
|
+
class SubscriptionCheckpointChunk
|
|
4
|
+
class Checkpoint
|
|
5
|
+
include Extensions::OptionsExtension
|
|
6
|
+
include Extensions::OptionsDefaults
|
|
7
|
+
|
|
8
|
+
attr_reader subscription_position: Integer
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
include Chunk[Checkpoint, Checkpoint]
|
|
12
|
+
|
|
13
|
+
@checkpoint_event: Checkpoint?
|
|
14
|
+
|
|
15
|
+
def initialize: (Integer position) -> void
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Chunks
|
|
3
|
+
class SubscriptionEventsIndexChunk
|
|
4
|
+
class RawEventWithSubscriptionPosition
|
|
5
|
+
include Extensions::OptionsExtension
|
|
6
|
+
include Extensions::OptionsDefaults
|
|
7
|
+
|
|
8
|
+
attr_accessor attributes: Hash[String, untyped]
|
|
9
|
+
attr_accessor subscription_position: Integer
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
include Chunk[EventGlobalIndex::SubscriptionRepr, RawEventWithSubscriptionPosition]
|
|
13
|
+
|
|
14
|
+
MAX_PARTITIONS_TO_RESOLVE_PER_CALL: Integer
|
|
15
|
+
|
|
16
|
+
@connection: Connection
|
|
17
|
+
@raw_events: Array[RawEventWithSubscriptionPosition]
|
|
18
|
+
@indexes: Array[EventGlobalIndex::SubscriptionRepr]
|
|
19
|
+
@query_strategy: QueryStrategy
|
|
20
|
+
@resolve_link_tos: bool
|
|
21
|
+
@resolved: bool
|
|
22
|
+
|
|
23
|
+
def initialize: (Array[EventGlobalIndex::SubscriptionRepr] indexes, Connection connection,
|
|
24
|
+
QueryStrategy query_strategy, bool resolve_link_tos) -> void
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def events_global_index_queries: -> EventsGlobalIndexQueries
|
|
29
|
+
|
|
30
|
+
def resolve_indexes: -> void
|
|
31
|
+
|
|
32
|
+
def resolved?: -> bool
|
|
33
|
+
|
|
34
|
+
def sort: (Array[RawEventWithSubscriptionPosition] raw_events) -> Array[RawEventWithSubscriptionPosition]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,65 +1,63 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
class Client
|
|
3
3
|
# _@param_ `config`
|
|
4
|
-
def initialize: (
|
|
5
|
-
|
|
6
|
-
# _@param_ `stream`
|
|
7
|
-
#
|
|
8
|
-
# _@param_ `events_or_event`
|
|
9
|
-
#
|
|
10
|
-
# _@param_ `options`
|
|
11
|
-
#
|
|
12
|
-
# _@param_ `middlewares` — provide a list of middleware names to override a config's middlewares
|
|
4
|
+
def initialize: (Config config) -> void
|
|
5
|
+
|
|
13
6
|
def append_to_stream: (
|
|
14
|
-
|
|
15
|
-
(
|
|
7
|
+
Stream stream,
|
|
8
|
+
(Event | ::Array[Event]) events_or_event,
|
|
16
9
|
?options: ::Hash[untyped, untyped],
|
|
17
|
-
?middlewares: ::Array[
|
|
18
|
-
) -> (
|
|
10
|
+
?middlewares: ::Array[Symbol]?
|
|
11
|
+
) -> (Event | ::Array[Event])
|
|
19
12
|
|
|
20
13
|
def multiple: (?read_only: bool) { () -> untyped } -> untyped
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
# _@param_ `options` — request options
|
|
25
|
-
#
|
|
26
|
-
# _@param_ `middlewares` — provide a list of middleware names to override a config's middlewares
|
|
27
|
-
def read: (PgEventstore::Stream stream, ?options: ::Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?) -> ::Array[PgEventstore::Event]
|
|
15
|
+
def read: (Stream stream, ?options: ::Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?) -> ::Array[Event]
|
|
28
16
|
|
|
29
|
-
def read_grouped: (Stream stream, ?options: Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?) -> ::Array[
|
|
17
|
+
def read_grouped: (Stream stream, ?options: Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?) -> ::Array[Event]
|
|
30
18
|
|
|
31
19
|
# Temporary skip RBS checks of this method. It doesn't play well with Enumerator under certain circumstances
|
|
32
20
|
%a{rbs:test:skip} def read_paginated: (
|
|
33
|
-
|
|
34
|
-
) -> ::Enumerator[Array[
|
|
35
|
-
|
|
36
|
-
# _@param_ `stream`
|
|
37
|
-
#
|
|
38
|
-
# _@param_ `events_or_event`
|
|
39
|
-
#
|
|
40
|
-
# _@param_ `options`
|
|
41
|
-
#
|
|
42
|
-
# _@param_ `middlewares` — provide a list of middleware names to use. Defaults to empty array, meaning no middlewares will be applied to the "link" event
|
|
21
|
+
Stream stream, ?options: ::Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?
|
|
22
|
+
) -> ::Enumerator[Array[Event], void]
|
|
23
|
+
|
|
43
24
|
def link_to: (
|
|
44
|
-
|
|
45
|
-
(
|
|
25
|
+
Stream stream,
|
|
26
|
+
(Event | ::Array[Event]) events_or_event,
|
|
46
27
|
?options: ::Hash[untyped, untyped],
|
|
47
28
|
?middlewares: ::Array[::Symbol]
|
|
48
|
-
) -> (
|
|
29
|
+
) -> (Event | ::Array[Event])
|
|
30
|
+
|
|
31
|
+
attr_accessor config: Config
|
|
32
|
+
|
|
33
|
+
def read_streams: (?options: ::Hash[untyped, untyped]) -> Array[Stream]
|
|
34
|
+
|
|
35
|
+
def read_streams_paginated: (?options: ::Hash[untyped, untyped]) -> ::Enumerator[Array[Stream], void]
|
|
36
|
+
|
|
37
|
+
def stream_revision: (Stream stream) -> Integer
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def event_deserializer: (Array[Middleware] middlewares) -> EventDeserializer
|
|
42
|
+
|
|
43
|
+
def event_marker_queries: -> EventMarkerQueries
|
|
44
|
+
|
|
45
|
+
def event_subscription_position_queries: -> EventSubscriptionPositionQueries
|
|
46
|
+
|
|
47
|
+
def events_global_index_queries: -> EventsGlobalIndexQueries
|
|
48
|
+
|
|
49
|
+
def event_queries: -> EventQueries
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
def middlewares: (?::Array[::Symbol]? middlewares) -> ::Array[PgEventstore::Middleware]
|
|
51
|
+
def index_filtering_queries: -> IndexFilteringQueries
|
|
52
52
|
|
|
53
|
-
def
|
|
53
|
+
def partition_queries: () -> PartitionQueries
|
|
54
54
|
|
|
55
|
-
def
|
|
55
|
+
def streams_global_index_queries: -> StreamsGlobalIndexQueries
|
|
56
56
|
|
|
57
|
-
def transaction_queries: () ->
|
|
57
|
+
def transaction_queries: () -> TransactionQueries
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
def event_queries: (::Array[PgEventstore::Middleware] middlewares) -> PgEventstore::EventQueries
|
|
59
|
+
def middlewares: (?::Array[::Symbol]? middlewares) -> ::Array[Middleware]
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
attr_accessor config: PgEventstore::Config
|
|
61
|
+
def connection: () -> Connection
|
|
64
62
|
end
|
|
65
63
|
end
|
|
@@ -1,33 +1,19 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
module Commands
|
|
3
|
-
class Append <
|
|
4
|
-
# _@param_ `stream`
|
|
5
|
-
#
|
|
6
|
-
# _@param_ `events`
|
|
7
|
-
#
|
|
8
|
-
# _@param_ `options`
|
|
9
|
-
#
|
|
10
|
-
# _@param_ `event_modifier`
|
|
11
|
-
#
|
|
12
|
-
# _@return_ — persisted events
|
|
3
|
+
class Append < AbstractCommand
|
|
13
4
|
def call: (
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
Stream stream,
|
|
6
|
+
*Event events,
|
|
7
|
+
event_modifier: _EventModifier,
|
|
8
|
+
deserializer: EventDeserializer,
|
|
9
|
+
?options: ::Hash[untyped, untyped]
|
|
10
|
+
) -> ::Array[Event]
|
|
19
11
|
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# _@param_ `events`
|
|
23
|
-
def create_partitions: (PgEventstore::Stream stream, ::Array[PgEventstore::Event] events) -> void
|
|
12
|
+
private
|
|
24
13
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# _@param_ `stream`
|
|
30
|
-
def assert_expected_revision!: (Integer revision, (Symbol | Integer) expected_revision, PgEventstore::Stream stream) -> void
|
|
14
|
+
def feature_markers: (Event event) -> Array[String]
|
|
15
|
+
|
|
16
|
+
def prepare_partitions: (Stream stream, ::Array[Event] events) -> Array[Partition]
|
|
31
17
|
end
|
|
32
18
|
end
|
|
33
19
|
end
|
|
@@ -2,22 +2,19 @@ module PgEventstore
|
|
|
2
2
|
module Commands
|
|
3
3
|
module EventModifiers
|
|
4
4
|
class PrepareLinkEvent
|
|
5
|
-
|
|
6
|
-
def initialize: (PgEventstore::PartitionQueries partition_queries) -> void
|
|
5
|
+
@serializer: EventSerializer
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
# _@param_ `revision`
|
|
11
|
-
def call: (PgEventstore::Event event, Integer revision) -> PgEventstore::Event
|
|
7
|
+
attr_reader partition_queries: PartitionQueries
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
# _@return_ — partition id
|
|
16
|
-
def partition_id: (PgEventstore::Event event) -> Integer
|
|
9
|
+
attr_reader partitions: Hash[untyped, untyped]
|
|
17
10
|
|
|
18
|
-
|
|
11
|
+
def initialize: (PartitionQueries partition_queries, EventSerializer serializer) -> void
|
|
19
12
|
|
|
20
|
-
|
|
13
|
+
def call: (Event event) -> Event
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def partition_id: (Event event) -> Integer
|
|
21
18
|
end
|
|
22
19
|
end
|
|
23
20
|
end
|
|
@@ -2,10 +2,11 @@ module PgEventstore
|
|
|
2
2
|
module Commands
|
|
3
3
|
module EventModifiers
|
|
4
4
|
class PrepareRegularEvent
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
@serializer: EventSerializer
|
|
6
|
+
|
|
7
|
+
def initialize: (EventSerializer serializer) -> void
|
|
8
|
+
|
|
9
|
+
def call: (Event event) -> Event
|
|
9
10
|
end
|
|
10
11
|
end
|
|
11
12
|
end
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
module Commands
|
|
3
|
-
class LinkTo <
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# _@param_ `events`
|
|
7
|
-
#
|
|
8
|
-
# _@param_ `options`
|
|
9
|
-
#
|
|
10
|
-
# _@return_ — persisted events
|
|
11
|
-
def call: (PgEventstore::Stream stream, *PgEventstore::Event events, ?options: ::Hash[untyped, untyped]) -> ::Array[PgEventstore::Event]
|
|
3
|
+
class LinkTo < AbstractCommand
|
|
4
|
+
def call: (Stream stream, *Event events, event_modifier: _EventModifier, deserializer: EventDeserializer,
|
|
5
|
+
?options: ::Hash[untyped, untyped]) -> ::Array[Event]
|
|
12
6
|
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def check_events_presence: (::Array[Event] events) -> void
|
|
15
10
|
end
|
|
16
11
|
end
|
|
17
12
|
end
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
module Commands
|
|
3
|
-
class Read <
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
# _@param_ `options` — request options
|
|
7
|
-
def call: (PgEventstore::Stream stream, ?options: ::Hash[untyped, untyped]) -> ::Array[PgEventstore::Event]
|
|
3
|
+
class Read < AbstractCommand
|
|
4
|
+
def call: (Stream stream, deserializer: EventDeserializer, ?options: ::Hash[untyped, untyped]) -> ::Array[Event]
|
|
8
5
|
end
|
|
9
6
|
end
|
|
10
7
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Commands
|
|
3
|
+
class ReadStreamsPaginated < AbstractCommand
|
|
4
|
+
# Skip this type check because rbs duplicates calls to Enumerator#next
|
|
5
|
+
%a{rbs:test:skip} def call: (?options: ::Hash[untyped, untyped]) -> ::Enumerator[Array[Stream], void]
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def calc_next_position: (Array[StreamGlobalIndex] indexes, String? | Symbol? direction) -> Integer
|
|
10
|
+
|
|
11
|
+
def end_reached?: (Array[Stream] streams, Integer max_count) -> bool
|
|
12
|
+
|
|
13
|
+
def forwards?: (String? | Symbol? direction) -> bool
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
module PgEventstore
|
|
2
2
|
module Commands
|
|
3
|
-
class RegularStreamReadPaginated <
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
%a{rbs:test:skip} def call: (PgEventstore::Stream stream, ?options: ::Hash[untyped, untyped]) -> ::Enumerator[Array[PgEventstore::Event], void]
|
|
3
|
+
class RegularStreamReadPaginated < AbstractCommand
|
|
4
|
+
# Skip this type check because rbs duplicates calls to Enumerator#next
|
|
5
|
+
%a{rbs:test:skip} def call: (Stream stream, deserializer: EventDeserializer,
|
|
6
|
+
?options: ::Hash[untyped, untyped]) -> ::Enumerator[Array[Event], void]
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
# _@param_ `max_count`
|
|
12
|
-
def end_reached?: (::Array[PgEventstore::Event] events, Integer max_count) -> bool
|
|
8
|
+
private
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# _@param_ `direction`
|
|
19
|
-
def calc_next_revision: (::Array[PgEventstore::Event] events, (String | Symbol)? direction) -> Integer
|
|
10
|
+
def end_reached?: (::Array[Event] events, Integer max_count) -> bool
|
|
11
|
+
|
|
12
|
+
def calc_next_revision: (::Array[Event] events, (String | Symbol)? direction) -> Integer
|
|
20
13
|
|
|
21
|
-
# _@param_ `direction`
|
|
22
14
|
def forwards?: ((String | Symbol)? direction) -> bool
|
|
23
15
|
|
|
24
|
-
def read_cmd: () ->
|
|
16
|
+
def read_cmd: () -> Commands::Read
|
|
25
17
|
end
|
|
26
18
|
end
|
|
27
19
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Commands
|
|
3
|
+
module RevisionCheck
|
|
4
|
+
class CurrentRevision
|
|
5
|
+
class StreamRevision
|
|
6
|
+
include Extensions::OptionsExtension
|
|
7
|
+
include Extensions::OptionsDefaults
|
|
8
|
+
|
|
9
|
+
attr_accessor revision: Integer
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class EventTypeRevisions
|
|
13
|
+
include Extensions::OptionsExtension
|
|
14
|
+
include Extensions::OptionsDefaults
|
|
15
|
+
|
|
16
|
+
attr_accessor revisions: Array[EventGlobalIndex::RevisionCheckRepr]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.build: (Stream stream, Integer stream_revision,
|
|
20
|
+
ExpectedRevision::StreamRevision? | ExpectedRevision::EventTypeRevisions? expected_revision,
|
|
21
|
+
IndexFilteringQueries index_filtering_queries) -> (StreamRevision | EventTypeRevisions)?
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Commands
|
|
3
|
+
module RevisionCheck
|
|
4
|
+
class EventTypeRevisionsComparison
|
|
5
|
+
def self.verdict: (
|
|
6
|
+
Integer current_revision,
|
|
7
|
+
Symbol | Integer expected_revision,
|
|
8
|
+
?expected_markers: Array[String]?,
|
|
9
|
+
?event_type: String | Symbol
|
|
10
|
+
) -> WrongExpectedTypesRevisionError::Verdict?
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Commands
|
|
3
|
+
module RevisionCheck
|
|
4
|
+
class ExpectedRevision
|
|
5
|
+
class StreamRevision
|
|
6
|
+
include Extensions::OptionsExtension
|
|
7
|
+
include Extensions::OptionsDefaults
|
|
8
|
+
|
|
9
|
+
attr_accessor revision: Symbol | Integer
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class EventTypeRevision
|
|
13
|
+
include Extensions::OptionsExtension
|
|
14
|
+
include Extensions::OptionsDefaults
|
|
15
|
+
|
|
16
|
+
attr_accessor expected_revision: Symbol | Integer
|
|
17
|
+
attr_accessor event_type: String?
|
|
18
|
+
attr_accessor sequence_number: Integer
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class EventTypeRevisionWithMarkers
|
|
22
|
+
include Extensions::OptionsExtension
|
|
23
|
+
include Extensions::OptionsDefaults
|
|
24
|
+
|
|
25
|
+
attr_accessor expected_revision: Symbol | Integer
|
|
26
|
+
attr_accessor event_type: String?
|
|
27
|
+
attr_accessor markers: Array[String]
|
|
28
|
+
attr_accessor sequence_number: Integer
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class MarkersRevision
|
|
32
|
+
include Extensions::OptionsExtension
|
|
33
|
+
include Extensions::OptionsDefaults
|
|
34
|
+
|
|
35
|
+
attr_accessor expected_revision: Symbol | Integer
|
|
36
|
+
attr_accessor markers: Array[String]
|
|
37
|
+
attr_accessor sequence_number: Integer
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class EventTypeRevisions
|
|
41
|
+
include Extensions::OptionsExtension
|
|
42
|
+
include Extensions::OptionsDefaults
|
|
43
|
+
|
|
44
|
+
attr_accessor revisions: Array[EventTypeRevision | EventTypeRevisionWithMarkers | MarkersRevision]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.build: (
|
|
48
|
+
# stream revision
|
|
49
|
+
(Symbol | Integer)? |
|
|
50
|
+
Hash[
|
|
51
|
+
String,
|
|
52
|
+
# <event type>-to-<stream revision of the event>
|
|
53
|
+
Symbol | Integer |
|
|
54
|
+
# <event type>-to-<stream revision of the event with markers>
|
|
55
|
+
{ expected_revision: Symbol | Integer, ?markers: Array[String] }] |
|
|
56
|
+
# <any event type>-to-<stream revision of the event with markers>
|
|
57
|
+
{ any: { expected_revision: Symbol | Integer, ?markers: Array[String] } } expected_revision) -> (StreamRevision | EventTypeRevisions)?
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def self.extract_markers: (Hash[untyped, untyped] hash) -> Array[String]
|
|
62
|
+
|
|
63
|
+
def self.extract_expected_revision: (Hash[untyped, untyped] hash) -> (Symbol | Integer)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module PgEventstore
|
|
2
|
+
module Commands
|
|
3
|
+
module RevisionCheck
|
|
4
|
+
class StreamRevisionCheck
|
|
5
|
+
def self.assert_eq!: ((CurrentRevision::StreamRevision | CurrentRevision::EventTypeRevisions)?,
|
|
6
|
+
(ExpectedRevision::StreamRevision | ExpectedRevision::EventTypeRevisions)?, Stream stream) -> void
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
def self.find_index: (
|
|
11
|
+
Commands::RevisionCheck::ExpectedRevision::EventTypeRevision |
|
|
12
|
+
Commands::RevisionCheck::ExpectedRevision::EventTypeRevisionWithMarkers |
|
|
13
|
+
Commands::RevisionCheck::ExpectedRevision::MarkersRevision
|
|
14
|
+
expected_revision,
|
|
15
|
+
Hash[Integer, EventGlobalIndex::RevisionCheckRepr] rev_check_indexes
|
|
16
|
+
) -> EventGlobalIndex::RevisionCheckRepr
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|