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.
Files changed (303) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -1
  3. data/CHANGELOG.md +186 -20
  4. data/README.md +25 -15
  5. data/db/migrations/10_setup_pg_cron.rb +1 -23
  6. data/db/migrations/15_create_streams_global_index.sql +17 -0
  7. data/db/migrations/16_populate_streams_global_index.rb +150 -0
  8. data/db/migrations/17_create_events_global_index.sql +62 -0
  9. data/db/migrations/18_populate_events_global_index.rb +124 -0
  10. data/db/migrations/19_populate_events_global_index_p2.rb +25 -0
  11. data/db/migrations/20_migrate_subscriptions_current_position.sql +19 -0
  12. data/db/migrations/21_create_partitions_stats.sql +2 -0
  13. data/db/migrations/22_drop_streams_sql_view.sql +2 -0
  14. data/db/migrations/23_adjust_partitions_indexes.sql +5 -0
  15. data/db/migrations/24_drop_legacy_events_indexes.sql +3 -0
  16. data/db/migrations/25_add_parent_partitions_info_to_partitions.sql +16 -0
  17. data/db/migrations/26_change_events_stream_revision_type.rb +35 -0
  18. data/db/migrations/27_drop_events_horizon.sql +3 -0
  19. data/db/migrations/28_create_maintenance_tasks.sql +8 -0
  20. data/db/migrations/29_create_event_markers.sql +35 -0
  21. data/db/migrations/30_improve_partitions_search_in_admin_ui.rb +24 -0
  22. data/db/migrations/31_drop_events_id_default_value.sql +1 -0
  23. data/db/migrations/32_create_parittions_triggers.sql +101 -0
  24. data/docs/AGENTS.fragment.md +696 -0
  25. data/docs/admin_ui.md +3 -1
  26. data/docs/appending_events.md +110 -49
  27. data/docs/configuration.md +69 -36
  28. data/docs/event_tracing.md +55 -0
  29. data/docs/events_and_streams.md +54 -30
  30. data/docs/how_it_works.md +57 -16
  31. data/docs/linking_events.md +2 -1
  32. data/docs/maintenance.md +14 -5
  33. data/docs/multiple_commands.md +17 -8
  34. data/docs/reading_events.md +208 -43
  35. data/docs/reading_streams.md +50 -0
  36. data/docs/replication.md +99 -0
  37. data/docs/subscriptions.md +165 -35
  38. data/docs/writing_middleware.md +25 -8
  39. data/ext/pg_eventstore_ext/extconf.rb +5 -0
  40. data/ext/pg_eventstore_ext/pg_eventstore_ext.c +74 -0
  41. data/lib/pg_eventstore/async_runner.rb +63 -0
  42. data/lib/pg_eventstore/basic_config.rb +15 -0
  43. data/lib/pg_eventstore/chunks/chunk.rb +31 -0
  44. data/lib/pg_eventstore/chunks/read_api_events_index_chunk.rb +83 -0
  45. data/lib/pg_eventstore/chunks/replica_events_index_chunk.rb +35 -0
  46. data/lib/pg_eventstore/chunks/repository.rb +73 -0
  47. data/lib/pg_eventstore/chunks/subscription_checkpoint_chunk.rb +48 -0
  48. data/lib/pg_eventstore/chunks/subscription_events_index_chunk.rb +99 -0
  49. data/lib/pg_eventstore/chunks.rb +14 -0
  50. data/lib/pg_eventstore/client.rb +163 -50
  51. data/lib/pg_eventstore/commands/append.rb +62 -43
  52. data/lib/pg_eventstore/commands/delete_event.rb +7 -8
  53. data/lib/pg_eventstore/commands/delete_stream.rb +3 -3
  54. data/lib/pg_eventstore/commands/event_modifiers/prepare_link_event.rb +9 -7
  55. data/lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb +12 -7
  56. data/lib/pg_eventstore/commands/link_to.rb +5 -5
  57. data/lib/pg_eventstore/commands/read.rb +23 -5
  58. data/lib/pg_eventstore/commands/read_grouped.rb +46 -0
  59. data/lib/pg_eventstore/commands/read_streams.rb +18 -0
  60. data/lib/pg_eventstore/commands/read_streams_paginated.rb +56 -0
  61. data/lib/pg_eventstore/commands/regular_stream_read_paginated.rb +4 -4
  62. data/lib/pg_eventstore/commands/revision_check/current_revision.rb +51 -0
  63. data/lib/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rb +46 -0
  64. data/lib/pg_eventstore/commands/revision_check/expected_revision.rb +135 -0
  65. data/lib/pg_eventstore/commands/revision_check/stream_revision_check.rb +98 -0
  66. data/lib/pg_eventstore/commands/revision_check/stream_revision_comparison.rb +36 -0
  67. data/lib/pg_eventstore/commands/stream_revision.rb +14 -0
  68. data/lib/pg_eventstore/commands/system_stream_read_paginated.rb +4 -4
  69. data/lib/pg_eventstore/commands.rb +4 -2
  70. data/lib/pg_eventstore/config.rb +30 -9
  71. data/lib/pg_eventstore/connection.rb +21 -2
  72. data/lib/pg_eventstore/errors.rb +136 -10
  73. data/lib/pg_eventstore/event.rb +34 -2
  74. data/lib/pg_eventstore/event_deserializer.rb +5 -4
  75. data/lib/pg_eventstore/event_global_index.rb +118 -0
  76. data/lib/pg_eventstore/event_marker.rb +16 -0
  77. data/lib/pg_eventstore/event_marker_index.rb +25 -0
  78. data/lib/pg_eventstore/event_serializer.rb +6 -0
  79. data/lib/pg_eventstore/extensions/acts_as_configurable.rb +88 -0
  80. data/lib/pg_eventstore/extensions/options_defaults.rb +25 -0
  81. data/lib/pg_eventstore/extensions/options_extension.rb +2 -2
  82. data/lib/pg_eventstore/feature_marker.rb +18 -0
  83. data/lib/pg_eventstore/maintenance.rb +11 -6
  84. data/lib/pg_eventstore/middleware/event_tracing.rb +53 -0
  85. data/lib/pg_eventstore/partition.rb +6 -0
  86. data/lib/pg_eventstore/pg_connection.rb +70 -14
  87. data/lib/pg_eventstore/queries/event_marker_queries.rb +74 -0
  88. data/lib/pg_eventstore/queries/event_queries.rb +7 -93
  89. data/lib/pg_eventstore/queries/events_global_index_queries.rb +131 -0
  90. data/lib/pg_eventstore/queries/index_filtering_queries.rb +179 -0
  91. data/lib/pg_eventstore/queries/links_resolver.rb +4 -4
  92. data/lib/pg_eventstore/queries/maintenance_queries.rb +159 -42
  93. data/lib/pg_eventstore/queries/partition_queries.rb +45 -103
  94. data/lib/pg_eventstore/queries/replica_queries.rb +110 -0
  95. data/lib/pg_eventstore/queries/streams_global_index_queries.rb +163 -0
  96. data/lib/pg_eventstore/queries/transaction_queries.rb +52 -10
  97. data/lib/pg_eventstore/queries.rb +29 -1
  98. data/lib/pg_eventstore/query_builders/basic_filtering.rb +38 -5
  99. data/lib/pg_eventstore/query_builders/event_markers_filtering.rb +47 -0
  100. data/lib/pg_eventstore/query_builders/event_markers_index_filtering.rb +275 -0
  101. data/lib/pg_eventstore/query_builders/event_subscription_positions_filtering.rb +37 -0
  102. data/lib/pg_eventstore/query_builders/events_filtering.rb +15 -164
  103. data/lib/pg_eventstore/query_builders/events_global_index_filtering.rb +227 -0
  104. data/lib/pg_eventstore/query_builders/filters/collection.rb +324 -0
  105. data/lib/pg_eventstore/query_builders/filters/event_type_filter.rb +37 -0
  106. data/lib/pg_eventstore/query_builders/filters/filter_row.rb +54 -0
  107. data/lib/pg_eventstore/query_builders/filters/marker_filter.rb +20 -0
  108. data/lib/pg_eventstore/query_builders/filters/marker_filter_row.rb +49 -0
  109. data/lib/pg_eventstore/query_builders/filters/stream_filter.rb +48 -0
  110. data/lib/pg_eventstore/query_builders/index_based_events_filtering.rb +260 -0
  111. data/lib/pg_eventstore/query_builders/partitions_filtering.rb +175 -51
  112. data/lib/pg_eventstore/query_builders/read_cursor/stream_cursor.rb +122 -0
  113. data/lib/pg_eventstore/query_builders/streams_global_index_filtering.rb +83 -0
  114. data/lib/pg_eventstore/query_builders/subscription_events_filtering.rb +79 -0
  115. data/lib/pg_eventstore/query_strategy/async.rb +64 -0
  116. data/lib/pg_eventstore/query_strategy/foreground.rb +25 -0
  117. data/lib/pg_eventstore/query_strategy.rb +19 -0
  118. data/lib/pg_eventstore/raw_event.rb +46 -0
  119. data/lib/pg_eventstore/rspec/test_helpers.rb +21 -8
  120. data/lib/pg_eventstore/sql_builder.rb +87 -8
  121. data/lib/pg_eventstore/stream.rb +13 -16
  122. data/lib/pg_eventstore/stream_global_index.rb +28 -0
  123. data/lib/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rb +5 -17
  124. data/lib/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rb +36 -0
  125. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rb +12 -0
  126. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +21 -7
  127. data/lib/pg_eventstore/subscriptions/events_processor.rb +20 -18
  128. data/lib/pg_eventstore/subscriptions/events_processor_consumer/multiple.rb +63 -0
  129. data/lib/pg_eventstore/subscriptions/events_processor_consumer/replica.rb +68 -0
  130. data/lib/pg_eventstore/subscriptions/events_processor_consumer/single.rb +62 -0
  131. data/lib/pg_eventstore/subscriptions/events_processor_consumer.rb +44 -0
  132. data/lib/pg_eventstore/subscriptions/events_subscription_position_worker.rb +68 -0
  133. data/lib/pg_eventstore/subscriptions/queries/event_subscription_position_queries.rb +177 -0
  134. data/lib/pg_eventstore/subscriptions/queries/subscription_queries.rb +78 -54
  135. data/lib/pg_eventstore/subscriptions/replica_subscription_handler.rb +140 -0
  136. data/lib/pg_eventstore/subscriptions/replica_subscription_runner.rb +9 -0
  137. data/lib/pg_eventstore/subscriptions/subscription.rb +2 -1
  138. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/collection.rb +36 -0
  139. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/index_read_strategy.rb +82 -0
  140. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/replication_strategy.rb +75 -0
  141. data/lib/pg_eventstore/subscriptions/subscription_feed_strategy.rb +31 -0
  142. data/lib/pg_eventstore/subscriptions/subscription_feeder.rb +24 -0
  143. data/lib/pg_eventstore/subscriptions/subscription_handler_performance.rb +4 -2
  144. data/lib/pg_eventstore/subscriptions/subscription_runner.rb +20 -9
  145. data/lib/pg_eventstore/subscriptions/subscription_runner_commands/reset_position.rb +1 -1
  146. data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +9 -18
  147. data/lib/pg_eventstore/subscriptions/subscriptions_lifecycle.rb +0 -12
  148. data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +74 -14
  149. data/lib/pg_eventstore/{subscriptions/synchronized_array.rb → synchronized_array.rb} +15 -0
  150. data/lib/pg_eventstore/tasks/setup.rake +2 -2
  151. data/lib/pg_eventstore/utils.rb +31 -0
  152. data/lib/pg_eventstore/version.rb +1 -1
  153. data/lib/pg_eventstore/web/application.rb +100 -16
  154. data/lib/pg_eventstore/web/paginator/base_collection.rb +5 -1
  155. data/lib/pg_eventstore/web/paginator/event_types_collection.rb +14 -4
  156. data/lib/pg_eventstore/web/paginator/events_collection.rb +29 -33
  157. data/lib/pg_eventstore/web/paginator/helpers.rb +16 -9
  158. data/lib/pg_eventstore/web/paginator/markers_collection.rb +48 -0
  159. data/lib/pg_eventstore/web/paginator/stream_contexts_collection.rb +13 -2
  160. data/lib/pg_eventstore/web/paginator/stream_ids_collection.rb +21 -11
  161. data/lib/pg_eventstore/web/paginator/stream_names_collection.rb +18 -4
  162. data/lib/pg_eventstore/web/paginator/streams_collection.rb +95 -0
  163. data/lib/pg_eventstore/web/public/javascripts/pg_eventstore.js +49 -22
  164. data/lib/pg_eventstore/web/subscriptions/set_collection.rb +1 -1
  165. data/lib/pg_eventstore/web/subscriptions/subscriptions.rb +1 -1
  166. data/lib/pg_eventstore/web/subscriptions/with_state/set_collection.rb +1 -1
  167. data/lib/pg_eventstore/web/subscriptions/with_state/subscriptions.rb +1 -1
  168. data/lib/pg_eventstore/web/views/home/dashboard.erb +11 -9
  169. data/lib/pg_eventstore/web/views/home/partials/event_filter.erb +18 -5
  170. data/lib/pg_eventstore/web/views/home/partials/events.erb +38 -1
  171. data/lib/pg_eventstore/web/views/home/partials/markers_filter.erb +18 -0
  172. data/lib/pg_eventstore/web/views/layouts/application.erb +6 -0
  173. data/lib/pg_eventstore/web/views/streams/index.erb +110 -0
  174. data/lib/pg_eventstore/web/views/streams/partials/streams.erb +11 -0
  175. data/lib/pg_eventstore/web/views/subscriptions/index.erb +4 -1
  176. data/lib/pg_eventstore/web.rb +2 -0
  177. data/lib/pg_eventstore.rb +23 -60
  178. data/pg_eventstore.gemspec +6 -4
  179. data/sig/interfaces/_raw_events_handler.rbs +3 -0
  180. data/sig/interfaces/subscription_handler.rbs +1 -1
  181. data/sig/pg/result.rbs +9 -0
  182. data/sig/pg_eventstore/async_runner.rbs +13 -0
  183. data/sig/pg_eventstore/basic_config.rbs +9 -0
  184. data/sig/pg_eventstore/chunks/chunk.rbs +13 -0
  185. data/sig/pg_eventstore/chunks/read_api_events_index_chunk.rbs +30 -0
  186. data/sig/pg_eventstore/chunks/replica_events_index_chunk.rbs +11 -0
  187. data/sig/pg_eventstore/chunks/repository.rbs +22 -0
  188. data/sig/pg_eventstore/chunks/subscription_checkpoint_chunk.rbs +18 -0
  189. data/sig/pg_eventstore/chunks/subscription_events_index_chunk.rbs +37 -0
  190. data/sig/pg_eventstore/client.rbs +40 -42
  191. data/sig/pg_eventstore/commands/append.rbs +11 -25
  192. data/sig/pg_eventstore/commands/event_modifiers/prepare_link_event.rbs +9 -12
  193. data/sig/pg_eventstore/commands/event_modifiers/prepare_regular_event.rbs +5 -4
  194. data/sig/pg_eventstore/commands/link_to.rbs +6 -11
  195. data/sig/pg_eventstore/commands/read.rbs +2 -5
  196. data/sig/pg_eventstore/commands/read_grouped.rbs +7 -0
  197. data/sig/pg_eventstore/commands/read_streams.rbs +7 -0
  198. data/sig/pg_eventstore/commands/read_streams_paginated.rbs +16 -0
  199. data/sig/pg_eventstore/commands/regular_stream_read_paginated.rbs +9 -17
  200. data/sig/pg_eventstore/commands/revision_check/current_revision.rbs +25 -0
  201. data/sig/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rbs +14 -0
  202. data/sig/pg_eventstore/commands/revision_check/expected_revision.rbs +67 -0
  203. data/sig/pg_eventstore/commands/revision_check/stream_revision_check.rbs +20 -0
  204. data/sig/pg_eventstore/commands/revision_check/stream_revision_comparison.rbs +9 -0
  205. data/sig/pg_eventstore/commands/stream_revision.rbs +7 -0
  206. data/sig/pg_eventstore/commands/system_stream_read_paginated.rbs +9 -14
  207. data/sig/pg_eventstore/config.rbs +15 -6
  208. data/sig/pg_eventstore/connection.rbs +11 -18
  209. data/sig/pg_eventstore/errors.rbs +64 -34
  210. data/sig/pg_eventstore/event.rbs +16 -2
  211. data/sig/pg_eventstore/event_deserializer.rbs +5 -10
  212. data/sig/pg_eventstore/event_global_index.rbs +60 -0
  213. data/sig/pg_eventstore/event_marker.rbs +9 -0
  214. data/sig/pg_eventstore/event_marker_index.rbs +12 -0
  215. data/sig/pg_eventstore/extensions/acts_as_configurable.rbs +29 -0
  216. data/sig/pg_eventstore/extensions/options_defaults.rbs +7 -0
  217. data/sig/pg_eventstore/feature_marker.rbs +10 -0
  218. data/sig/pg_eventstore/maintenance.rbs +12 -8
  219. data/sig/pg_eventstore/middleware/event_trace.rbs +14 -0
  220. data/sig/pg_eventstore/partition.rbs +2 -4
  221. data/sig/pg_eventstore/pg_connection.rbs +8 -0
  222. data/sig/pg_eventstore/queries/event_marker_queries.rbs +21 -0
  223. data/sig/pg_eventstore/queries/event_queries.rbs +4 -36
  224. data/sig/pg_eventstore/queries/events_global_index_queries.rbs +37 -0
  225. data/sig/pg_eventstore/queries/index_filtering_queries.rbs +50 -0
  226. data/sig/pg_eventstore/queries/links_resolver.rbs +5 -9
  227. data/sig/pg_eventstore/queries/maintenance_queries.rbs +12 -9
  228. data/sig/pg_eventstore/queries/partition_queries.rbs +32 -67
  229. data/sig/pg_eventstore/queries/replica_queries.rbs +31 -0
  230. data/sig/pg_eventstore/queries/streams_global_index_queries.rbs +39 -0
  231. data/sig/pg_eventstore/queries/transaction_queries.rbs +2 -0
  232. data/sig/pg_eventstore/queries.rbs +11 -21
  233. data/sig/pg_eventstore/query_builders/basic_filtering.rbs +10 -3
  234. data/sig/pg_eventstore/query_builders/event_markers_filtering.rbs +17 -0
  235. data/sig/pg_eventstore/query_builders/event_markers_index_filtering.rbs +69 -0
  236. data/sig/pg_eventstore/query_builders/event_subscription_positions_filtering.rbs +15 -0
  237. data/sig/pg_eventstore/query_builders/events_filtering_query.rbs +9 -51
  238. data/sig/pg_eventstore/query_builders/events_global_index_filtering.rbs +68 -0
  239. data/sig/pg_eventstore/query_builders/filters/collection.rbs +84 -0
  240. data/sig/pg_eventstore/query_builders/filters/event_type_filter.rbs +19 -0
  241. data/sig/pg_eventstore/query_builders/filters/filter_row.rbs +21 -0
  242. data/sig/pg_eventstore/query_builders/filters/marker_filter.rbs +13 -0
  243. data/sig/pg_eventstore/query_builders/filters/marker_filter_row.rbs +19 -0
  244. data/sig/pg_eventstore/query_builders/filters/stream_filter.rbs +24 -0
  245. data/sig/pg_eventstore/query_builders/index_based_events_filtering.rbs +60 -0
  246. data/sig/pg_eventstore/query_builders/partitions_filtering.rbs +29 -10
  247. data/sig/pg_eventstore/query_builders/read_cursor/stream_cursor.rbs +47 -0
  248. data/sig/pg_eventstore/query_builders/streams_global_index_filtering.rbs +27 -0
  249. data/sig/pg_eventstore/query_builders/subscription_events_filtering.rbs +26 -0
  250. data/sig/pg_eventstore/query_strategy/async.rbs +17 -0
  251. data/sig/pg_eventstore/query_strategy/foreground.rbs +11 -0
  252. data/sig/pg_eventstore/query_strategy.rbs +7 -0
  253. data/sig/pg_eventstore/raw_event.rbs +20 -0
  254. data/sig/pg_eventstore/sql_builder.rbs +32 -10
  255. data/sig/pg_eventstore/stream.rbs +10 -18
  256. data/sig/pg_eventstore/stream_global_index.rbs +14 -0
  257. data/sig/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rbs +5 -4
  258. data/sig/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rbs +9 -0
  259. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rbs +17 -12
  260. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rbs +17 -6
  261. data/sig/pg_eventstore/subscriptions/event_subscription_position_queries.rbs +30 -0
  262. data/sig/pg_eventstore/subscriptions/events_processor.rbs +12 -5
  263. data/sig/pg_eventstore/subscriptions/events_processor_consumer/multiple.rbs +17 -0
  264. data/sig/pg_eventstore/subscriptions/events_processor_consumer/replica.rbs +17 -0
  265. data/sig/pg_eventstore/subscriptions/events_processor_consumer/single.rbs +17 -0
  266. data/sig/pg_eventstore/subscriptions/events_processor_consumer.rbs +14 -0
  267. data/sig/pg_eventstore/subscriptions/events_subscription_position_worker.rbs +28 -0
  268. data/sig/pg_eventstore/subscriptions/queries/subscription_queries.rbs +7 -39
  269. data/sig/pg_eventstore/subscriptions/replica_subscription_handler.rbs +33 -0
  270. data/sig/pg_eventstore/subscriptions/replica_subscription_runner.rbs +4 -0
  271. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/collection.rbs +14 -0
  272. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/index_read_strategy.rbs +23 -0
  273. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/replication_strategy.rbs +23 -0
  274. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy.rbs +11 -0
  275. data/sig/pg_eventstore/subscriptions/subscription_feeder.rbs +13 -10
  276. data/sig/pg_eventstore/subscriptions/subscription_handler_performance.rbs +1 -1
  277. data/sig/pg_eventstore/subscriptions/subscription_runner.rbs +13 -2
  278. data/sig/pg_eventstore/subscriptions/subscription_runners_feeder.rbs +1 -8
  279. data/sig/pg_eventstore/subscriptions/subscriptions_lifecycle.rbs +4 -6
  280. data/sig/pg_eventstore/subscriptions/subscriptions_manager.rbs +29 -43
  281. data/sig/pg_eventstore/synchronized_array.rbs +4 -0
  282. data/sig/pg_eventstore/utils.rbs +10 -11
  283. data/sig/pg_eventstore/web/application.rbs +13 -3
  284. data/sig/pg_eventstore/web/paginator/base_collection.rbs +2 -0
  285. data/sig/pg_eventstore/web/paginator/event_types_collection.rbs +4 -0
  286. data/sig/pg_eventstore/web/paginator/events_collection.rbs +11 -11
  287. data/sig/pg_eventstore/web/paginator/helpers.rbs +6 -15
  288. data/sig/pg_eventstore/web/paginator/markers_collection.rbs +13 -0
  289. data/sig/pg_eventstore/web/paginator/stream_contexts_collection.rbs +4 -0
  290. data/sig/pg_eventstore/web/paginator/stream_names_collection.rbs +4 -0
  291. data/sig/pg_eventstore/web/paginator/streams_collection.rbs +30 -0
  292. data/sig/pg_eventstore.rbs +8 -26
  293. metadata +175 -20
  294. data/Dockerfile +0 -3
  295. data/lib/pg_eventstore/commands/all_stream_read_grouped.rb +0 -69
  296. data/lib/pg_eventstore/commands/regular_stream_read_grouped.rb +0 -31
  297. data/lib/pg_eventstore/subscriptions/queries/subscription_service_queries.rb +0 -78
  298. data/lib/pg_eventstore/web/views/home/partials/system_stream_filter.erb +0 -15
  299. data/sig/pg_eventstore/commands/all_stream_read_grouped.rbs +0 -16
  300. data/sig/pg_eventstore/commands/regular_stream_read_grouped.rbs +0 -8
  301. data/sig/pg_eventstore/subscriptions/queries/subscription_service_queries.rbs +0 -19
  302. data/sig/pg_eventstore/subscriptions/synchronized_array.rbs +0 -4
  303. /data/sig/interfaces/{_raw_event_handler.rbs → raw_event_handler.rbs} +0 -0
@@ -1,3 +1,3 @@
1
1
  interface _SubscriptionHandler
2
- def call: (PgEventstore::Event event) -> void
2
+ def call: (PgEventstore::Event | Array[PgEventstore::Event] event) -> void
3
3
  end
data/sig/pg/result.rbs ADDED
@@ -0,0 +1,9 @@
1
+ module PG
2
+ class Result
3
+ def map_types!: (untyped type_map) -> self
4
+
5
+ def field_names_as: (Symbol type_map) -> self
6
+
7
+ def inspect: -> String
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module PgEventstore
2
+ class AsyncRunner
3
+ @jobs: Hash[Fiber, bool]
4
+
5
+ def async: () { -> void } -> void
6
+
7
+ def jobs_size: -> Integer
8
+
9
+ def run: -> void
10
+
11
+ def run_once: -> void
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module PgEventstore
2
+ class BasicConfig
3
+ include Extensions::OptionsExtension
4
+
5
+ attr_reader name: Symbol
6
+
7
+ def initialize: (name: Symbol, **untyped options) -> void
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module PgEventstore
2
+ module Chunks
3
+ module Chunk[unchecked ElemIn, unchecked ElemOut]
4
+ def drained?: -> bool
5
+
6
+ def last: -> ElemIn?
7
+
8
+ def size: -> Integer
9
+
10
+ def take: (Integer? size) -> Array[ElemOut]
11
+ end
12
+ end
13
+ end
@@ -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: (PgEventstore::Config config) -> void
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
- PgEventstore::Stream stream,
15
- (PgEventstore::Event | ::Array[PgEventstore::Event]) events_or_event,
7
+ Stream stream,
8
+ (Event | ::Array[Event]) events_or_event,
16
9
  ?options: ::Hash[untyped, untyped],
17
- ?middlewares: ::Array[untyped]?
18
- ) -> (PgEventstore::Event | ::Array[PgEventstore::Event])
10
+ ?middlewares: ::Array[Symbol]?
11
+ ) -> (Event | ::Array[Event])
19
12
 
20
13
  def multiple: (?read_only: bool) { () -> untyped } -> untyped
21
14
 
22
- # _@param_ `stream`
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[PgEventstore::Event]
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
- PgEventstore::Stream stream, ?options: ::Hash[untyped, untyped], ?middlewares: ::Array[::Symbol]?
34
- ) -> ::Enumerator[Array[PgEventstore::Event], void]
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
- PgEventstore::Stream stream,
45
- (PgEventstore::Event | ::Array[PgEventstore::Event]) events_or_event,
25
+ Stream stream,
26
+ (Event | ::Array[Event]) events_or_event,
46
27
  ?options: ::Hash[untyped, untyped],
47
28
  ?middlewares: ::Array[::Symbol]
48
- ) -> (PgEventstore::Event | ::Array[PgEventstore::Event])
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
- # _@param_ `middlewares`
51
- def middlewares: (?::Array[::Symbol]? middlewares) -> ::Array[PgEventstore::Middleware]
51
+ def index_filtering_queries: -> IndexFilteringQueries
52
52
 
53
- def connection: () -> PgEventstore::Connection
53
+ def partition_queries: () -> PartitionQueries
54
54
 
55
- def partition_queries: () -> PgEventstore::PartitionQueries
55
+ def streams_global_index_queries: -> StreamsGlobalIndexQueries
56
56
 
57
- def transaction_queries: () -> PgEventstore::TransactionQueries
57
+ def transaction_queries: () -> TransactionQueries
58
58
 
59
- # _@param_ `middlewares`
60
- def event_queries: (::Array[PgEventstore::Middleware] middlewares) -> PgEventstore::EventQueries
59
+ def middlewares: (?::Array[::Symbol]? middlewares) -> ::Array[Middleware]
61
60
 
62
- # Returns the value of attribute config.
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 < PgEventstore::AbstractCommand
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
- PgEventstore::Stream stream,
15
- *PgEventstore::Event events,
16
- ?options: ::Hash[untyped, untyped],
17
- ?event_modifier: _EventModifier
18
- ) -> ::Array[PgEventstore::Event]
5
+ Stream stream,
6
+ *Event events,
7
+ event_modifier: _EventModifier,
8
+ deserializer: EventDeserializer,
9
+ ?options: ::Hash[untyped, untyped]
10
+ ) -> ::Array[Event]
19
11
 
20
- # _@param_ `stream`
21
- #
22
- # _@param_ `events`
23
- def create_partitions: (PgEventstore::Stream stream, ::Array[PgEventstore::Event] events) -> void
12
+ private
24
13
 
25
- # _@param_ `revision`
26
- #
27
- # _@param_ `expected_revision`
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
- # _@param_ `partition_queries`
6
- def initialize: (PgEventstore::PartitionQueries partition_queries) -> void
5
+ @serializer: EventSerializer
7
6
 
8
- # _@param_ `event`
9
- #
10
- # _@param_ `revision`
11
- def call: (PgEventstore::Event event, Integer revision) -> PgEventstore::Event
7
+ attr_reader partition_queries: PartitionQueries
12
8
 
13
- # _@param_ `event` — persisted event
14
- #
15
- # _@return_ — partition id
16
- def partition_id: (PgEventstore::Event event) -> Integer
9
+ attr_reader partitions: Hash[untyped, untyped]
17
10
 
18
- attr_reader partition_queries: PgEventstore::PartitionQueries
11
+ def initialize: (PartitionQueries partition_queries, EventSerializer serializer) -> void
19
12
 
20
- attr_reader partitions: Hash[untyped, untyped]
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
- # _@param_ `event`
6
- #
7
- # _@param_ `revision`
8
- def call: (PgEventstore::Event event, Integer revision) -> PgEventstore::Event
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 < PgEventstore::AbstractCommand
4
- # _@param_ `stream`
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
- # _@param_ `events`
14
- def check_events_presence: (::Array[PgEventstore::Event] events) -> void
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 < PgEventstore::AbstractCommand
4
- # _@param_ `stream`
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,7 @@
1
+ module PgEventstore
2
+ module Commands
3
+ class ReadGrouped < AbstractCommand
4
+ def call: (Stream stream, deserializer: EventDeserializer, ?options: ::Hash[untyped, untyped]) -> Array[Event]
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module PgEventstore
2
+ module Commands
3
+ class ReadStreams < AbstractCommand
4
+ def call: (?options: ::Hash[untyped, untyped]) -> Array[Stream]
5
+ end
6
+ end
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 < PgEventstore::AbstractCommand
4
- # _@param_ `stream`
5
- #
6
- # _@param_ `options`
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
- # _@param_ `events`
10
- #
11
- # _@param_ `max_count`
12
- def end_reached?: (::Array[PgEventstore::Event] events, Integer max_count) -> bool
8
+ private
13
9
 
14
- # _@param_ `events`
15
- #
16
- # _@param_ `revision`
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: () -> PgEventstore::Commands::Read
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
@@ -0,0 +1,9 @@
1
+ module PgEventstore
2
+ module Commands
3
+ module RevisionCheck
4
+ class StreamRevisionComparison
5
+ def self.verdict: (Integer current_revision, Symbol | Integer expected_revision) -> Symbol?
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ module PgEventstore
2
+ module Commands
3
+ class StreamRevision < AbstractCommand
4
+ def call: (Stream stream) -> Integer
5
+ end
6
+ end
7
+ end