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.
Files changed (319) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +11 -2
  3. data/CHANGELOG.md +195 -16
  4. data/README.md +33 -10
  5. data/db/migrations/10_setup_pg_cron.rb +1 -0
  6. data/db/migrations/11_add_events_link_global_position.sql +1 -0
  7. data/db/migrations/12_migrate_legacy_links.rb +83 -0
  8. data/db/migrations/13_remove_events_link_id.sql +6 -0
  9. data/db/migrations/14_remove_ids_events_id_index.sql +1 -0
  10. data/db/migrations/15_create_streams_global_index.sql +17 -0
  11. data/db/migrations/16_populate_streams_global_index.rb +150 -0
  12. data/db/migrations/17_create_events_global_index.sql +62 -0
  13. data/db/migrations/18_populate_events_global_index.rb +124 -0
  14. data/db/migrations/19_populate_events_global_index_p2.rb +25 -0
  15. data/db/migrations/20_migrate_subscriptions_current_position.sql +19 -0
  16. data/db/migrations/21_create_partitions_stats.sql +2 -0
  17. data/db/migrations/22_drop_streams_sql_view.sql +2 -0
  18. data/db/migrations/23_adjust_partitions_indexes.sql +5 -0
  19. data/db/migrations/24_drop_legacy_events_indexes.sql +3 -0
  20. data/db/migrations/25_add_parent_partitions_info_to_partitions.sql +16 -0
  21. data/db/migrations/26_change_events_stream_revision_type.rb +35 -0
  22. data/db/migrations/27_drop_events_horizon.sql +3 -0
  23. data/db/migrations/28_create_maintenance_tasks.sql +8 -0
  24. data/db/migrations/29_create_event_markers.sql +35 -0
  25. data/db/migrations/30_improve_partitions_search_in_admin_ui.rb +24 -0
  26. data/db/migrations/31_drop_events_id_default_value.sql +1 -0
  27. data/db/migrations/32_create_parittions_triggers.sql +101 -0
  28. data/db/migrations/9_create_events_horizon.sql +21 -0
  29. data/docs/AGENTS.fragment.md +696 -0
  30. data/docs/admin_ui.md +3 -1
  31. data/docs/appending_events.md +110 -49
  32. data/docs/configuration.md +69 -36
  33. data/docs/event_tracing.md +55 -0
  34. data/docs/events_and_streams.md +54 -30
  35. data/docs/how_it_works.md +57 -16
  36. data/docs/linking_events.md +2 -1
  37. data/docs/maintenance.md +14 -5
  38. data/docs/multiple_commands.md +30 -6
  39. data/docs/reading_events.md +208 -43
  40. data/docs/reading_streams.md +50 -0
  41. data/docs/replication.md +99 -0
  42. data/docs/subscriptions.md +165 -35
  43. data/docs/writing_middleware.md +25 -8
  44. data/ext/pg_eventstore_ext/extconf.rb +5 -0
  45. data/ext/pg_eventstore_ext/pg_eventstore_ext.c +74 -0
  46. data/lib/pg_eventstore/async_runner.rb +63 -0
  47. data/lib/pg_eventstore/basic_config.rb +15 -0
  48. data/lib/pg_eventstore/callbacks.rb +7 -5
  49. data/lib/pg_eventstore/chunks/chunk.rb +31 -0
  50. data/lib/pg_eventstore/chunks/read_api_events_index_chunk.rb +83 -0
  51. data/lib/pg_eventstore/chunks/replica_events_index_chunk.rb +35 -0
  52. data/lib/pg_eventstore/chunks/repository.rb +73 -0
  53. data/lib/pg_eventstore/chunks/subscription_checkpoint_chunk.rb +48 -0
  54. data/lib/pg_eventstore/chunks/subscription_events_index_chunk.rb +99 -0
  55. data/lib/pg_eventstore/chunks.rb +14 -0
  56. data/lib/pg_eventstore/cli/try_to_delete_subscriptions_set.rb +2 -2
  57. data/lib/pg_eventstore/client.rb +167 -52
  58. data/lib/pg_eventstore/commands/append.rb +62 -43
  59. data/lib/pg_eventstore/commands/delete_event.rb +7 -8
  60. data/lib/pg_eventstore/commands/delete_stream.rb +3 -3
  61. data/lib/pg_eventstore/commands/event_modifiers/prepare_link_event.rb +11 -6
  62. data/lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb +12 -7
  63. data/lib/pg_eventstore/commands/link_to.rb +9 -9
  64. data/lib/pg_eventstore/commands/multiple.rb +2 -2
  65. data/lib/pg_eventstore/commands/read.rb +23 -5
  66. data/lib/pg_eventstore/commands/read_grouped.rb +46 -0
  67. data/lib/pg_eventstore/commands/read_streams.rb +18 -0
  68. data/lib/pg_eventstore/commands/read_streams_paginated.rb +56 -0
  69. data/lib/pg_eventstore/commands/regular_stream_read_paginated.rb +4 -4
  70. data/lib/pg_eventstore/commands/revision_check/current_revision.rb +51 -0
  71. data/lib/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rb +46 -0
  72. data/lib/pg_eventstore/commands/revision_check/expected_revision.rb +135 -0
  73. data/lib/pg_eventstore/commands/revision_check/stream_revision_check.rb +98 -0
  74. data/lib/pg_eventstore/commands/revision_check/stream_revision_comparison.rb +36 -0
  75. data/lib/pg_eventstore/commands/stream_revision.rb +14 -0
  76. data/lib/pg_eventstore/commands/system_stream_read_paginated.rb +4 -4
  77. data/lib/pg_eventstore/commands.rb +4 -2
  78. data/lib/pg_eventstore/config.rb +30 -9
  79. data/lib/pg_eventstore/connection.rb +22 -37
  80. data/lib/pg_eventstore/errors.rb +137 -11
  81. data/lib/pg_eventstore/event.rb +39 -7
  82. data/lib/pg_eventstore/event_deserializer.rb +5 -4
  83. data/lib/pg_eventstore/event_global_index.rb +118 -0
  84. data/lib/pg_eventstore/event_marker.rb +16 -0
  85. data/lib/pg_eventstore/event_marker_index.rb +25 -0
  86. data/lib/pg_eventstore/event_serializer.rb +6 -0
  87. data/lib/pg_eventstore/extensions/acts_as_configurable.rb +88 -0
  88. data/lib/pg_eventstore/extensions/options_defaults.rb +25 -0
  89. data/lib/pg_eventstore/extensions/options_extension.rb +42 -13
  90. data/lib/pg_eventstore/feature_marker.rb +18 -0
  91. data/lib/pg_eventstore/maintenance.rb +11 -6
  92. data/lib/pg_eventstore/middleware/event_tracing.rb +53 -0
  93. data/lib/pg_eventstore/partition.rb +6 -0
  94. data/lib/pg_eventstore/pg_connection.rb +70 -14
  95. data/lib/pg_eventstore/queries/event_marker_queries.rb +74 -0
  96. data/lib/pg_eventstore/queries/event_queries.rb +9 -95
  97. data/lib/pg_eventstore/queries/events_global_index_queries.rb +131 -0
  98. data/lib/pg_eventstore/queries/index_filtering_queries.rb +179 -0
  99. data/lib/pg_eventstore/queries/links_resolver.rb +10 -7
  100. data/lib/pg_eventstore/queries/maintenance_queries.rb +159 -42
  101. data/lib/pg_eventstore/queries/partition_queries.rb +46 -104
  102. data/lib/pg_eventstore/queries/replica_queries.rb +110 -0
  103. data/lib/pg_eventstore/queries/streams_global_index_queries.rb +163 -0
  104. data/lib/pg_eventstore/queries/transaction_queries.rb +58 -10
  105. data/lib/pg_eventstore/queries.rb +29 -1
  106. data/lib/pg_eventstore/query_builders/basic_filtering.rb +38 -5
  107. data/lib/pg_eventstore/query_builders/event_markers_filtering.rb +47 -0
  108. data/lib/pg_eventstore/query_builders/event_markers_index_filtering.rb +275 -0
  109. data/lib/pg_eventstore/query_builders/event_subscription_positions_filtering.rb +37 -0
  110. data/lib/pg_eventstore/query_builders/events_filtering.rb +15 -164
  111. data/lib/pg_eventstore/query_builders/events_global_index_filtering.rb +227 -0
  112. data/lib/pg_eventstore/query_builders/filters/collection.rb +324 -0
  113. data/lib/pg_eventstore/query_builders/filters/event_type_filter.rb +37 -0
  114. data/lib/pg_eventstore/query_builders/filters/filter_row.rb +54 -0
  115. data/lib/pg_eventstore/query_builders/filters/marker_filter.rb +20 -0
  116. data/lib/pg_eventstore/query_builders/filters/marker_filter_row.rb +49 -0
  117. data/lib/pg_eventstore/query_builders/filters/stream_filter.rb +48 -0
  118. data/lib/pg_eventstore/query_builders/index_based_events_filtering.rb +260 -0
  119. data/lib/pg_eventstore/query_builders/partitions_filtering.rb +175 -51
  120. data/lib/pg_eventstore/query_builders/read_cursor/stream_cursor.rb +122 -0
  121. data/lib/pg_eventstore/query_builders/streams_global_index_filtering.rb +83 -0
  122. data/lib/pg_eventstore/query_builders/subscription_events_filtering.rb +79 -0
  123. data/lib/pg_eventstore/query_strategy/async.rb +64 -0
  124. data/lib/pg_eventstore/query_strategy/foreground.rb +25 -0
  125. data/lib/pg_eventstore/query_strategy.rb +19 -0
  126. data/lib/pg_eventstore/raw_event.rb +46 -0
  127. data/lib/pg_eventstore/rspec/test_helpers.rb +21 -8
  128. data/lib/pg_eventstore/sql_builder.rb +87 -8
  129. data/lib/pg_eventstore/stream.rb +14 -17
  130. data/lib/pg_eventstore/stream_global_index.rb +28 -0
  131. data/lib/pg_eventstore/subscriptions/basic_runner.rb +4 -4
  132. data/lib/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rb +5 -17
  133. data/lib/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rb +36 -0
  134. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rb +13 -1
  135. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +19 -14
  136. data/lib/pg_eventstore/subscriptions/events_processor.rb +21 -19
  137. data/lib/pg_eventstore/subscriptions/events_processor_consumer/multiple.rb +63 -0
  138. data/lib/pg_eventstore/subscriptions/events_processor_consumer/replica.rb +68 -0
  139. data/lib/pg_eventstore/subscriptions/events_processor_consumer/single.rb +62 -0
  140. data/lib/pg_eventstore/subscriptions/events_processor_consumer.rb +44 -0
  141. data/lib/pg_eventstore/subscriptions/events_subscription_position_worker.rb +68 -0
  142. data/lib/pg_eventstore/subscriptions/queries/event_subscription_position_queries.rb +177 -0
  143. data/lib/pg_eventstore/subscriptions/queries/subscription_command_queries.rb +5 -5
  144. data/lib/pg_eventstore/subscriptions/queries/subscription_queries.rb +80 -56
  145. data/lib/pg_eventstore/subscriptions/queries/subscriptions_set_command_queries.rb +2 -2
  146. data/lib/pg_eventstore/subscriptions/queries/subscriptions_set_queries.rb +1 -1
  147. data/lib/pg_eventstore/subscriptions/replica_subscription_handler.rb +140 -0
  148. data/lib/pg_eventstore/subscriptions/replica_subscription_runner.rb +9 -0
  149. data/lib/pg_eventstore/subscriptions/subscription.rb +9 -7
  150. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/collection.rb +36 -0
  151. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/index_read_strategy.rb +82 -0
  152. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/replication_strategy.rb +75 -0
  153. data/lib/pg_eventstore/subscriptions/subscription_feed_strategy.rb +31 -0
  154. data/lib/pg_eventstore/subscriptions/subscription_feeder.rb +26 -2
  155. data/lib/pg_eventstore/subscriptions/subscription_handler_performance.rb +5 -5
  156. data/lib/pg_eventstore/subscriptions/subscription_runner.rb +20 -22
  157. data/lib/pg_eventstore/subscriptions/subscription_runner_commands/reset_position.rb +1 -1
  158. data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +10 -11
  159. data/lib/pg_eventstore/subscriptions/subscriptions_lifecycle.rb +0 -12
  160. data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +84 -29
  161. data/lib/pg_eventstore/{subscriptions/synchronized_array.rb → synchronized_array.rb} +15 -0
  162. data/lib/pg_eventstore/tasks/setup.rake +32 -33
  163. data/lib/pg_eventstore/utils.rb +39 -0
  164. data/lib/pg_eventstore/version.rb +1 -1
  165. data/lib/pg_eventstore/web/application.rb +104 -20
  166. data/lib/pg_eventstore/web/paginator/base_collection.rb +5 -1
  167. data/lib/pg_eventstore/web/paginator/event_types_collection.rb +14 -4
  168. data/lib/pg_eventstore/web/paginator/events_collection.rb +29 -33
  169. data/lib/pg_eventstore/web/paginator/helpers.rb +19 -12
  170. data/lib/pg_eventstore/web/paginator/markers_collection.rb +48 -0
  171. data/lib/pg_eventstore/web/paginator/stream_contexts_collection.rb +13 -2
  172. data/lib/pg_eventstore/web/paginator/stream_ids_collection.rb +21 -11
  173. data/lib/pg_eventstore/web/paginator/stream_names_collection.rb +18 -4
  174. data/lib/pg_eventstore/web/paginator/streams_collection.rb +95 -0
  175. data/lib/pg_eventstore/web/public/javascripts/pg_eventstore.js +49 -22
  176. data/lib/pg_eventstore/web/subscriptions/helpers.rb +2 -2
  177. data/lib/pg_eventstore/web/subscriptions/set_collection.rb +1 -1
  178. data/lib/pg_eventstore/web/subscriptions/subscriptions.rb +1 -1
  179. data/lib/pg_eventstore/web/subscriptions/with_state/set_collection.rb +1 -1
  180. data/lib/pg_eventstore/web/subscriptions/with_state/subscriptions.rb +1 -1
  181. data/lib/pg_eventstore/web/views/home/dashboard.erb +11 -9
  182. data/lib/pg_eventstore/web/views/home/partials/event_filter.erb +18 -5
  183. data/lib/pg_eventstore/web/views/home/partials/events.erb +38 -1
  184. data/lib/pg_eventstore/web/views/home/partials/markers_filter.erb +18 -0
  185. data/lib/pg_eventstore/web/views/layouts/application.erb +6 -0
  186. data/lib/pg_eventstore/web/views/streams/index.erb +110 -0
  187. data/lib/pg_eventstore/web/views/streams/partials/streams.erb +11 -0
  188. data/lib/pg_eventstore/web/views/subscriptions/index.erb +4 -1
  189. data/lib/pg_eventstore/web.rb +2 -0
  190. data/lib/pg_eventstore.rb +26 -63
  191. data/pg_eventstore.gemspec +6 -4
  192. data/sig/interfaces/_raw_events_handler.rbs +3 -0
  193. data/sig/interfaces/subscription_handler.rbs +1 -1
  194. data/sig/pg/result.rbs +9 -0
  195. data/sig/pg_eventstore/async_runner.rbs +13 -0
  196. data/sig/pg_eventstore/basic_config.rbs +9 -0
  197. data/sig/pg_eventstore/chunks/chunk.rbs +13 -0
  198. data/sig/pg_eventstore/chunks/read_api_events_index_chunk.rbs +30 -0
  199. data/sig/pg_eventstore/chunks/replica_events_index_chunk.rbs +11 -0
  200. data/sig/pg_eventstore/chunks/repository.rbs +22 -0
  201. data/sig/pg_eventstore/chunks/subscription_checkpoint_chunk.rbs +18 -0
  202. data/sig/pg_eventstore/chunks/subscription_events_index_chunk.rbs +37 -0
  203. data/sig/pg_eventstore/client.rbs +41 -43
  204. data/sig/pg_eventstore/commands/append.rbs +11 -25
  205. data/sig/pg_eventstore/commands/event_modifiers/prepare_link_event.rbs +9 -12
  206. data/sig/pg_eventstore/commands/event_modifiers/prepare_regular_event.rbs +5 -4
  207. data/sig/pg_eventstore/commands/link_to.rbs +6 -11
  208. data/sig/pg_eventstore/commands/multiple.rbs +1 -1
  209. data/sig/pg_eventstore/commands/read.rbs +2 -5
  210. data/sig/pg_eventstore/commands/read_grouped.rbs +7 -0
  211. data/sig/pg_eventstore/commands/read_streams.rbs +7 -0
  212. data/sig/pg_eventstore/commands/read_streams_paginated.rbs +16 -0
  213. data/sig/pg_eventstore/commands/regular_stream_read_paginated.rbs +9 -17
  214. data/sig/pg_eventstore/commands/revision_check/current_revision.rbs +25 -0
  215. data/sig/pg_eventstore/commands/revision_check/event_type_revisions_comparison.rbs +14 -0
  216. data/sig/pg_eventstore/commands/revision_check/expected_revision.rbs +67 -0
  217. data/sig/pg_eventstore/commands/revision_check/stream_revision_check.rbs +20 -0
  218. data/sig/pg_eventstore/commands/revision_check/stream_revision_comparison.rbs +9 -0
  219. data/sig/pg_eventstore/commands/stream_revision.rbs +7 -0
  220. data/sig/pg_eventstore/commands/system_stream_read_paginated.rbs +9 -14
  221. data/sig/pg_eventstore/config.rbs +15 -6
  222. data/sig/pg_eventstore/connection.rbs +11 -18
  223. data/sig/pg_eventstore/errors.rbs +64 -34
  224. data/sig/pg_eventstore/event.rbs +20 -6
  225. data/sig/pg_eventstore/event_deserializer.rbs +5 -10
  226. data/sig/pg_eventstore/event_global_index.rbs +60 -0
  227. data/sig/pg_eventstore/event_marker.rbs +9 -0
  228. data/sig/pg_eventstore/event_marker_index.rbs +12 -0
  229. data/sig/pg_eventstore/extensions/acts_as_configurable.rbs +29 -0
  230. data/sig/pg_eventstore/extensions/options_defaults.rbs +7 -0
  231. data/sig/pg_eventstore/extensions/options_extension.rbs +9 -1
  232. data/sig/pg_eventstore/feature_marker.rbs +10 -0
  233. data/sig/pg_eventstore/maintenance.rbs +12 -8
  234. data/sig/pg_eventstore/middleware/event_trace.rbs +14 -0
  235. data/sig/pg_eventstore/partition.rbs +2 -4
  236. data/sig/pg_eventstore/pg_connection.rbs +8 -0
  237. data/sig/pg_eventstore/queries/event_marker_queries.rbs +21 -0
  238. data/sig/pg_eventstore/queries/event_queries.rbs +6 -38
  239. data/sig/pg_eventstore/queries/events_global_index_queries.rbs +37 -0
  240. data/sig/pg_eventstore/queries/index_filtering_queries.rbs +50 -0
  241. data/sig/pg_eventstore/queries/links_resolver.rbs +7 -11
  242. data/sig/pg_eventstore/queries/maintenance_queries.rbs +12 -9
  243. data/sig/pg_eventstore/queries/partition_queries.rbs +32 -67
  244. data/sig/pg_eventstore/queries/replica_queries.rbs +31 -0
  245. data/sig/pg_eventstore/queries/streams_global_index_queries.rbs +39 -0
  246. data/sig/pg_eventstore/queries/transaction_queries.rbs +4 -2
  247. data/sig/pg_eventstore/queries.rbs +11 -21
  248. data/sig/pg_eventstore/query_builders/basic_filtering.rbs +10 -3
  249. data/sig/pg_eventstore/query_builders/event_markers_filtering.rbs +17 -0
  250. data/sig/pg_eventstore/query_builders/event_markers_index_filtering.rbs +69 -0
  251. data/sig/pg_eventstore/query_builders/event_subscription_positions_filtering.rbs +15 -0
  252. data/sig/pg_eventstore/query_builders/events_filtering_query.rbs +9 -51
  253. data/sig/pg_eventstore/query_builders/events_global_index_filtering.rbs +68 -0
  254. data/sig/pg_eventstore/query_builders/filters/collection.rbs +84 -0
  255. data/sig/pg_eventstore/query_builders/filters/event_type_filter.rbs +19 -0
  256. data/sig/pg_eventstore/query_builders/filters/filter_row.rbs +21 -0
  257. data/sig/pg_eventstore/query_builders/filters/marker_filter.rbs +13 -0
  258. data/sig/pg_eventstore/query_builders/filters/marker_filter_row.rbs +19 -0
  259. data/sig/pg_eventstore/query_builders/filters/stream_filter.rbs +24 -0
  260. data/sig/pg_eventstore/query_builders/index_based_events_filtering.rbs +60 -0
  261. data/sig/pg_eventstore/query_builders/partitions_filtering.rbs +29 -10
  262. data/sig/pg_eventstore/query_builders/read_cursor/stream_cursor.rbs +47 -0
  263. data/sig/pg_eventstore/query_builders/streams_global_index_filtering.rbs +27 -0
  264. data/sig/pg_eventstore/query_builders/subscription_events_filtering.rbs +26 -0
  265. data/sig/pg_eventstore/query_strategy/async.rbs +17 -0
  266. data/sig/pg_eventstore/query_strategy/foreground.rbs +11 -0
  267. data/sig/pg_eventstore/query_strategy.rbs +7 -0
  268. data/sig/pg_eventstore/raw_event.rbs +20 -0
  269. data/sig/pg_eventstore/sql_builder.rbs +32 -10
  270. data/sig/pg_eventstore/stream.rbs +10 -18
  271. data/sig/pg_eventstore/stream_global_index.rbs +14 -0
  272. data/sig/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rbs +5 -4
  273. data/sig/pg_eventstore/subscriptions/callback_handlers/events_subscription_position_worker_handlers.rbs +9 -0
  274. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_feeder_handlers.rbs +17 -12
  275. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rbs +16 -8
  276. data/sig/pg_eventstore/subscriptions/event_subscription_position_queries.rbs +30 -0
  277. data/sig/pg_eventstore/subscriptions/events_processor.rbs +12 -5
  278. data/sig/pg_eventstore/subscriptions/events_processor_consumer/multiple.rbs +17 -0
  279. data/sig/pg_eventstore/subscriptions/events_processor_consumer/replica.rbs +17 -0
  280. data/sig/pg_eventstore/subscriptions/events_processor_consumer/single.rbs +17 -0
  281. data/sig/pg_eventstore/subscriptions/events_processor_consumer.rbs +14 -0
  282. data/sig/pg_eventstore/subscriptions/events_subscription_position_worker.rbs +28 -0
  283. data/sig/pg_eventstore/subscriptions/queries/subscription_queries.rbs +18 -50
  284. data/sig/pg_eventstore/subscriptions/replica_subscription_handler.rbs +33 -0
  285. data/sig/pg_eventstore/subscriptions/replica_subscription_runner.rbs +4 -0
  286. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/collection.rbs +14 -0
  287. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/index_read_strategy.rbs +23 -0
  288. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/replication_strategy.rbs +23 -0
  289. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy.rbs +11 -0
  290. data/sig/pg_eventstore/subscriptions/subscription_feeder.rbs +13 -10
  291. data/sig/pg_eventstore/subscriptions/subscription_handler_performance.rbs +1 -1
  292. data/sig/pg_eventstore/subscriptions/subscription_runner.rbs +13 -5
  293. data/sig/pg_eventstore/subscriptions/subscription_runners_feeder.rbs +5 -5
  294. data/sig/pg_eventstore/subscriptions/subscriptions_lifecycle.rbs +4 -6
  295. data/sig/pg_eventstore/subscriptions/subscriptions_manager.rbs +29 -43
  296. data/sig/pg_eventstore/synchronized_array.rbs +4 -0
  297. data/sig/pg_eventstore/utils.rbs +18 -11
  298. data/sig/pg_eventstore/web/application.rbs +13 -3
  299. data/sig/pg_eventstore/web/paginator/base_collection.rbs +2 -0
  300. data/sig/pg_eventstore/web/paginator/event_types_collection.rbs +4 -0
  301. data/sig/pg_eventstore/web/paginator/events_collection.rbs +11 -11
  302. data/sig/pg_eventstore/web/paginator/helpers.rbs +6 -15
  303. data/sig/pg_eventstore/web/paginator/markers_collection.rbs +13 -0
  304. data/sig/pg_eventstore/web/paginator/stream_contexts_collection.rbs +4 -0
  305. data/sig/pg_eventstore/web/paginator/stream_names_collection.rbs +4 -0
  306. data/sig/pg_eventstore/web/paginator/streams_collection.rbs +30 -0
  307. data/sig/pg_eventstore.rbs +8 -26
  308. metadata +181 -21
  309. data/lib/pg_eventstore/commands/all_stream_read_grouped.rb +0 -69
  310. data/lib/pg_eventstore/commands/regular_stream_read_grouped.rb +0 -31
  311. data/lib/pg_eventstore/subscriptions/queries/service_queries.rb +0 -73
  312. data/lib/pg_eventstore/subscriptions/subscription_position_evaluation.rb +0 -195
  313. data/lib/pg_eventstore/web/views/home/partials/system_stream_filter.erb +0 -15
  314. data/sig/pg_eventstore/commands/all_stream_read_grouped.rbs +0 -16
  315. data/sig/pg_eventstore/commands/regular_stream_read_grouped.rbs +0 -8
  316. data/sig/pg_eventstore/subscriptions/queries/service_queries.rbs +0 -15
  317. data/sig/pg_eventstore/subscriptions/subscription_position_evaluation.rbs +0 -53
  318. data/sig/pg_eventstore/subscriptions/synchronized_array.rbs +0 -4
  319. /data/sig/interfaces/{_raw_event_handler.rbs → raw_event_handler.rbs} +0 -0
@@ -5,28 +5,31 @@ module PgEventstore
5
5
  def to_h: () -> ::Hash[untyped, untyped]
6
6
  end
7
7
 
8
- class StreamNotFoundError < PgEventstore::Error
8
+ class StreamNotFoundError < Error
9
9
  # _@param_ `stream`
10
- def initialize: (PgEventstore::Stream stream) -> void
10
+ def initialize: (Stream stream) -> void
11
11
 
12
12
  # Returns the value of attribute stream.
13
- attr_accessor stream: PgEventstore::Stream
13
+ attr_accessor stream: Stream
14
14
  end
15
15
 
16
- class SystemStreamError < PgEventstore::Error
16
+ class SystemStreamError < Error
17
17
  # _@param_ `stream`
18
- def initialize: (PgEventstore::Stream stream) -> void
18
+ def initialize: (Stream stream) -> void
19
19
 
20
- attr_accessor stream: PgEventstore::Stream
20
+ attr_accessor stream: Stream
21
21
  end
22
22
 
23
- class WrongExpectedRevisionError < PgEventstore::Error
24
- # _@param_ `revision`
25
- #
26
- # _@param_ `expected_revision`
27
- #
28
- # _@param_ `stream`
29
- def initialize: (revision: Integer, expected_revision: (Integer | Symbol), stream: PgEventstore::Stream) -> void
23
+ class WrongExpectedRevisionError < Error
24
+
25
+ attr_accessor stream: Stream
26
+ attr_accessor revision: Integer
27
+ attr_accessor expected_revision: (Integer | Symbol)
28
+ attr_accessor verdict: Symbol
29
+
30
+ def initialize: (revision: Integer, expected_revision: (Integer | Symbol), stream: Stream, verdict: Symbol) -> void
31
+
32
+ private
30
33
 
31
34
  def user_friendly_message: () -> String
32
35
 
@@ -39,28 +42,52 @@ module PgEventstore
39
42
  def unmatched_stream_revision: () -> String
40
43
 
41
44
  def stream_descr: () -> String
45
+ end
42
46
 
43
- attr_accessor stream: PgEventstore::Stream
47
+ class WrongExpectedTypesRevisionError < Error
48
+ class Verdict
49
+ include Extensions::OptionsExtension
50
+ include Extensions::OptionsDefaults
44
51
 
45
- attr_accessor revision: Integer
52
+ attr_accessor verdict: Symbol
53
+ attr_accessor event_type: String | Symbol
54
+ attr_accessor current_revision: Integer
55
+ attr_accessor expected_revision: Integer | Symbol
56
+ attr_accessor expected_markers: Array[String]?
57
+ end
46
58
 
47
- attr_accessor expected_revision: (Integer | Symbol)
48
- end
59
+ attr_accessor stream: Stream
60
+ attr_accessor verdicts: Array[Verdict]
49
61
 
50
- class RecordNotFound < PgEventstore::Error
51
- # _@param_ `table_name`
52
- #
53
- # _@param_ `id`
54
- def initialize: (String table_name, (Integer | String) id) -> void
62
+ def initialize: (stream: Stream, verdicts: Array[Verdict]) -> void
55
63
 
56
- def user_friendly_message: () -> String
64
+ private
57
65
 
66
+ def event_descr: (Verdict verdict) -> String
67
+
68
+ def event_is_absent: (Verdict verdict) -> String
69
+
70
+ def event_is_present: (Verdict verdict) -> String
71
+
72
+ def event_revision_does_not_match: (Verdict verdict) -> String
73
+
74
+ def revision_descr: (Verdict verdict) -> String
75
+
76
+ def stream_descr: -> String
77
+
78
+ def user_friendly_message: -> String
79
+ end
80
+
81
+ class RecordNotFound < Error
58
82
  attr_accessor table_name: String
83
+ attr_accessor id: untyped
84
+
85
+ def initialize: (String table_name, untyped id) -> void
59
86
 
60
- attr_accessor id: (Integer | String)
87
+ def user_friendly_message: () -> String
61
88
  end
62
89
 
63
- class SubscriptionAlreadyLockedError < PgEventstore::Error
90
+ class SubscriptionAlreadyLockedError < Error
64
91
  # _@param_ `set` — subscriptions set name
65
92
  #
66
93
  # _@param_ `name` — subscription's name
@@ -77,7 +104,7 @@ module PgEventstore
77
104
  attr_accessor lock_id: Integer
78
105
  end
79
106
 
80
- class WrongLockIdError < PgEventstore::Error
107
+ class WrongLockIdError < Error
81
108
  # _@param_ `set` — subscriptions set name
82
109
  #
83
110
  # _@param_ `name` — subscription's name
@@ -94,7 +121,7 @@ module PgEventstore
94
121
  attr_accessor lock_id: Integer
95
122
  end
96
123
 
97
- class NotPersistedEventError < PgEventstore::Error
124
+ class NotPersistedEventError < Error
98
125
  # _@param_ `event`
99
126
  def initialize: (PgEventstore::Event event) -> void
100
127
 
@@ -103,32 +130,35 @@ module PgEventstore
103
130
  attr_accessor event: PgEventstore::Event
104
131
  end
105
132
 
106
- class MissingPartitions < PgEventstore::Error
133
+ class MissingPartitions < Error
107
134
  # _@param_ `stream`
108
135
  #
109
136
  # _@param_ `event_types`
110
- def initialize: (PgEventstore::Stream stream, ::Array[String] event_types) -> void
137
+ def initialize: (Stream stream, ::Array[String] event_types) -> void
111
138
 
112
- attr_accessor stream: PgEventstore::Stream
139
+ attr_accessor stream: Stream
113
140
 
114
141
  attr_accessor event_types: ::Array[String]
115
142
  end
116
143
 
117
- class TooManyRecordsToLockError < PgEventstore::Error
118
- def initialize: (PgEventstore::Stream stream, Integer number_of_records) -> void
144
+ class TooManyRecordsToLockError < Error
145
+ def initialize: (Stream stream, Integer number_of_records) -> void
119
146
 
120
- attr_accessor stream: PgEventstore::Stream
147
+ attr_accessor stream: Stream
121
148
 
122
149
  attr_accessor number_of_records: Integer
123
150
 
124
151
  def user_friendly_message: -> String
125
152
  end
126
153
 
127
- class WrappedException < PgEventstore::Error
154
+ class WrappedException < Error
128
155
  def initialize: (StandardError original_exception, Hash[Symbol, untyped] extra) -> void
129
156
 
130
157
  attr_accessor original_exception: StandardError
131
158
 
132
159
  attr_accessor extra: Hash[Symbol, untyped]
133
160
  end
161
+
162
+ class NotSupportedError < Error
163
+ end
134
164
  end
@@ -1,11 +1,15 @@
1
1
  module PgEventstore
2
2
  class Event
3
- include Extensions::OptionsExtension
4
-
3
+ MARKERS_METADATA_KEY: String
4
+ NON_EXISTING_EVENT_REVISION: Integer
5
5
  LINK_TYPE: String
6
6
  PRIMARY_TABLE_NAME: String
7
+ SYSTEM_KEY_PREFIX: String
8
+ SYSTEM_SYMBOL: String
7
9
 
8
- def ==: ((Object | PgEventstore::Event) other) -> bool
10
+ include Extensions::OptionsExtension
11
+
12
+ def ==: ((Object | Event) other) -> bool
9
13
 
10
14
  def link?: () -> bool
11
15
 
@@ -29,20 +33,30 @@ module PgEventstore
29
33
 
30
34
  attr_accessor global_position: Integer?
31
35
 
32
- attr_accessor stream: PgEventstore::Stream?
36
+ attr_accessor stream: Stream?
33
37
 
34
38
  attr_accessor stream_revision: Integer?
35
39
 
36
40
  attr_accessor data: ::Hash[untyped, untyped]
37
41
 
42
+ attr_accessor markers: ::Array[String]
43
+
44
+ attr_accessor feature_markers: ::Array[FeatureMarker]
45
+
38
46
  attr_accessor metadata: ::Hash[untyped, untyped]
39
47
 
40
- attr_accessor link_id: String?
48
+ attr_accessor link_global_position: Integer?
41
49
 
42
50
  attr_accessor link_partition_id: Integer?
43
51
 
44
- attr_accessor link: PgEventstore::Event?
52
+ attr_accessor link: Event?
45
53
 
46
54
  attr_accessor created_at: Time?
55
+
56
+ attr_accessor caused_by: Event?
57
+
58
+ attr_accessor correlation_id: String?
59
+
60
+ attr_accessor causation_id: String?
47
61
  end
48
62
  end
@@ -1,19 +1,14 @@
1
1
  module PgEventstore
2
2
  class EventDeserializer
3
- # _@param_ `middlewares`
4
- #
5
- # _@param_ `event_class_resolver`
6
- def initialize: (::Array[PgEventstore::Middleware] middlewares, _EventClassResolver event_class_resolver) -> void
3
+ def initialize: (::Array[Middleware] middlewares, _EventClassResolver event_class_resolver) -> void
7
4
 
8
- # _@param_ `raw_events`
9
- def deserialize_many: (::Array[::Hash[untyped, untyped]] raw_events) -> ::Array[PgEventstore::Event]
5
+ def deserialize_many: (::Array[::Hash[untyped, untyped]] | Enumerator[Hash[untyped, untyped]] raw_events) -> ::Array[Event]
10
6
 
11
- # _@param_ `attrs`
12
- def deserialize: (::Hash[untyped, untyped] attrs) -> PgEventstore::Event
7
+ def deserialize: (::Hash[untyped, untyped] attrs) -> Event
13
8
 
14
- def without_middlewares: () -> PgEventstore::EventDeserializer
9
+ def without_middlewares: () -> EventDeserializer
15
10
 
16
- attr_accessor middlewares: ::Array[PgEventstore::Middleware]
11
+ attr_accessor middlewares: ::Array[Middleware]
17
12
 
18
13
  attr_accessor event_class_resolver: _EventClassResolver
19
14
  end
@@ -0,0 +1,60 @@
1
+ module PgEventstore
2
+ class EventGlobalIndex
3
+ include Extensions::OptionsExtension
4
+ include Extensions::OptionsDefaults
5
+
6
+ def self.create_representation: (Hash[untyped, untyped] attributes,
7
+ repr: Symbol?) -> (EventGlobalIndex | SubscriptionRepr | ReadApiRepr | WriteApiRepr | RevisionCheckRepr)
8
+
9
+ attr_accessor global_position: Integer
10
+ attr_accessor subscription_position: Integer?
11
+ attr_accessor stream_revision: Integer
12
+ attr_accessor context_partition_id: Integer
13
+ attr_accessor stream_name_partition_id: Integer
14
+ attr_accessor event_type_partition_id: Integer
15
+ attr_accessor streams_global_index_id: Integer
16
+
17
+ module ReprType
18
+ REVISION_CHECK: Symbol
19
+ SUBSCRIPTION: Symbol
20
+ READ_API: Symbol
21
+ WRITE_API: Symbol
22
+ end
23
+
24
+ class SubscriptionRepr
25
+ include Extensions::OptionsExtension
26
+ include Extensions::OptionsDefaults
27
+
28
+ attr_accessor global_position: Integer
29
+ attr_accessor subscription_position: Integer
30
+ attr_accessor event_type_partition_id: Integer
31
+
32
+ def to_subscription_position_attrs: -> { global_position: Integer, subscription_position: Integer }
33
+ end
34
+
35
+ class ReadApiRepr
36
+ include Extensions::OptionsExtension
37
+ include Extensions::OptionsDefaults
38
+
39
+ attr_accessor global_position: Integer
40
+ attr_accessor event_type_partition_id: Integer
41
+ end
42
+
43
+ class WriteApiRepr
44
+ include Extensions::OptionsExtension
45
+ include Extensions::OptionsDefaults
46
+
47
+ attr_accessor global_position: Integer
48
+ attr_accessor event_type_partition_id: Integer
49
+ attr_accessor stream_revision: Integer
50
+ end
51
+
52
+ class RevisionCheckRepr
53
+ include Extensions::OptionsExtension
54
+ include Extensions::OptionsDefaults
55
+
56
+ attr_accessor sequence_number: Integer
57
+ attr_accessor stream_revision: Integer
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,9 @@
1
+ module PgEventstore
2
+ class EventMarker
3
+ include Extensions::OptionsExtension
4
+ include Extensions::OptionsDefaults
5
+
6
+ attr_accessor id: Integer
7
+ attr_accessor name: String
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module PgEventstore
2
+ class EventMarkerIndex
3
+ include Extensions::OptionsExtension
4
+ include Extensions::OptionsDefaults
5
+
6
+ attr_accessor marker_id: Integer
7
+ attr_accessor streams_global_index_id: Integer
8
+ attr_accessor event_type_partition_id: Integer
9
+ attr_accessor global_position: Integer
10
+ attr_accessor stream_revision: Integer
11
+ end
12
+ end
@@ -0,0 +1,29 @@
1
+ module PgEventstore
2
+ module Extensions
3
+ module ActsAsConfigurable
4
+ def acts_as_configurable: (?default_config: Symbol, config_class: Class) -> void
5
+
6
+ module Configurable
7
+ @config: Hash[Symbol, Extensions::OptionsExtension]
8
+
9
+ @connection: Hash[Symbol, Connection]
10
+
11
+ attr_reader mutex: Thread::Mutex
12
+
13
+ def configure: (?name: Symbol) { (BasicConfig) -> untyped } -> untyped
14
+
15
+ def config: (?Symbol name) -> BasicConfig
16
+
17
+ def available_configs: () -> ::Array[Symbol]
18
+
19
+ def connection: (?Symbol name) -> Connection
20
+
21
+ private
22
+
23
+ def connection_options: (BasicConfig config) -> Hash[untyped, untyped]
24
+
25
+ def init_variables: -> void
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ module PgEventstore
2
+ module Extensions
3
+ module OptionsDefaults
4
+ def ==: (untyped) -> bool
5
+ end
6
+ end
7
+ end
@@ -15,7 +15,15 @@ module PgEventstore
15
15
  end
16
16
 
17
17
  class Options
18
- def []: (Symbol option) -> PgEventstore::Extensions::OptionsExtension::Option?
18
+ attr_reader options: Hash[Extensions::OptionsExtension::Option, true]
19
+
20
+ def initialize: (?Array[Extensions::OptionsExtension::Option] options) -> void
21
+
22
+ def +: (Options other) -> Options
23
+
24
+ def []: (Symbol option_name) -> Extensions::OptionsExtension::Option?
25
+
26
+ def include?: (Extensions::OptionsExtension::Option option) -> bool
19
27
  end
20
28
 
21
29
  def self.included: (untyped klass) -> untyped
@@ -0,0 +1,10 @@
1
+ module PgEventstore
2
+ class FeatureMarker
3
+ include Extensions::OptionsExtension
4
+ include Extensions::OptionsDefaults
5
+
6
+ attr_accessor marker: String
7
+ attr_accessor description: String?
8
+ attr_accessor purpose: Symbol?
9
+ end
10
+ end
@@ -1,19 +1,23 @@
1
1
  module PgEventstore
2
2
  class Maintenance
3
- @config: PgEventstore::Config
3
+ @config: Config
4
4
 
5
- attr_reader config: PgEventstore::Config
5
+ attr_reader config: Config
6
6
 
7
- def initialize: (PgEventstore::Config config) -> void
7
+ def initialize: (Config config) -> void
8
8
 
9
- def connection: () -> PgEventstore::Connection
9
+ def connection: () -> Connection
10
10
 
11
- def delete_event: (PgEventstore::Event event, ?force: bool)-> bool
11
+ def delete_event: (Event event, ?force: bool)-> bool
12
12
 
13
- def delete_stream: (PgEventstore::Stream stream)-> bool
13
+ def delete_stream: (Stream stream)-> bool
14
14
 
15
- def maintenance_queries: () -> PgEventstore::MaintenanceQueries
15
+ def maintenance_queries: () -> MaintenanceQueries
16
16
 
17
- def transaction_queries: () -> PgEventstore::TransactionQueries
17
+ def transaction_queries: () -> TransactionQueries
18
+
19
+ private
20
+
21
+ def events_global_index_queries: -> EventsGlobalIndexQueries
18
22
  end
19
23
  end
@@ -0,0 +1,14 @@
1
+ module PgEventstore
2
+ module Middleware
3
+ class EventTracing
4
+ include Middleware
5
+
6
+ CAUSATION_ID_KEY: String
7
+ CORRELATION_ID_KEY: String
8
+
9
+ def self.causation_marker: (String marker) -> FeatureMarker
10
+
11
+ def self.correlation_marker: (String marker) -> FeatureMarker
12
+ end
13
+ end
14
+ end
@@ -3,13 +3,11 @@ module PgEventstore
3
3
  include Extensions::OptionsExtension
4
4
 
5
5
  attr_accessor id: Integer
6
-
7
6
  attr_accessor context: String
8
-
9
7
  attr_accessor stream_name: String?
10
-
11
8
  attr_accessor event_type: String?
12
-
13
9
  attr_accessor table_name: String
10
+ attr_accessor parent_context_partition_id: Integer?
11
+ attr_accessor parent_stream_name_partition_id: Integer?
14
12
  end
15
13
  end
@@ -1,9 +1,17 @@
1
1
  module PgEventstore
2
2
  class PgConnection < PG::Connection
3
+ PLACEHOLDER_RE: untyped
4
+
3
5
  def exec: (untyped sql) -> untyped
4
6
 
5
7
  def exec_params: (untyped sql, untyped params) -> untyped
6
8
 
9
+ def compile: (String sql, Array[untyped] params) -> String
10
+
11
+ def prepared_value: (untyped value) -> String
12
+
13
+ private
14
+
7
15
  def log: (untyped sql, untyped params) -> untyped
8
16
 
9
17
  def encode_value: (untyped value) -> untyped
@@ -0,0 +1,21 @@
1
+ module PgEventstore
2
+ class EventMarkerQueries
3
+ @query_strategy: QueryStrategy
4
+
5
+ attr_reader connection: Connection
6
+
7
+ def initialize: (Connection connection, QueryStrategy query_strategy) -> void
8
+
9
+ def create_indexes: (
10
+ Integer stream_idx_id,
11
+ Array[EventGlobalIndex::WriteApiRepr] write_api_events_index,
12
+ Hash[Integer, Set[Integer]] revision_to_marker_ids_map
13
+ ) -> void
14
+
15
+ def find_or_create_by: (Array[String] names) -> Array[EventMarker]
16
+
17
+ private
18
+
19
+ def deserialize: (PG::Result pg_result) -> Array[EventMarker]
20
+ end
21
+ end
@@ -1,47 +1,15 @@
1
1
  module PgEventstore
2
2
  class EventQueries
3
- # _@param_ `connection`
4
- #
5
- # _@param_ `serializer`
6
- #
7
- # _@param_ `deserializer`
8
- def initialize: (PgEventstore::Connection connection, PgEventstore::EventSerializer serializer, PgEventstore::EventDeserializer deserializer) -> void
3
+ attr_accessor connection: Connection
9
4
 
10
- # _@param_ `event`
11
- def event_exists?: (PgEventstore::Event event) -> bool
5
+ def initialize: (Connection connection) -> void
12
6
 
13
- def grouped_events: (Stream stream, Array[Hash[untyped, untyped]] options_by_event_type, **untyped options)-> Array[Event]
7
+ def insert: (Stream stream, ::Array[Event] events) -> ::Array[Hash[String, untyped]]
14
8
 
15
- # _@param_ `events`
16
- def ids_from_db: (::Array[PgEventstore::Event] events) -> ::Array[String]
9
+ private
17
10
 
18
- # _@param_ `stream`
19
- def stream_revision: (PgEventstore::Stream stream) -> Integer?
11
+ def prepared_statements: (Stream stream, ::Array[Event] events) -> ::Array[(::Array[String] | ::Array[Object])]
20
12
 
21
- # _@param_ `stream`
22
- #
23
- # _@param_ `options`
24
- def stream_events: (PgEventstore::Stream stream, ::Hash[untyped, untyped] options) -> ::Array[PgEventstore::Event]
25
-
26
- # _@param_ `stream`
27
- #
28
- # _@param_ `events`
29
- def insert: (PgEventstore::Stream stream, ::Array[PgEventstore::Event] events) -> ::Array[PgEventstore::Event]
30
-
31
- # _@param_ `stream`
32
- #
33
- # _@param_ `events`
34
- def prepared_statements: (PgEventstore::Stream stream, ::Array[PgEventstore::Event] events) -> ::Array[(::Array[String] | ::Array[Object])]
35
-
36
- def links_resolver: () -> PgEventstore::LinksResolver
37
-
38
- # Returns the value of attribute connection.
39
- attr_accessor connection: PgEventstore::Connection
40
-
41
- # Returns the value of attribute serializer.
42
- attr_accessor serializer: PgEventstore::EventSerializer
43
-
44
- # Returns the value of attribute deserializer.
45
- attr_accessor deserializer: PgEventstore::EventDeserializer
13
+ def links_resolver: () -> LinksResolver
46
14
  end
47
15
  end
@@ -0,0 +1,37 @@
1
+ module PgEventstore
2
+ class EventsGlobalIndexQueries
3
+ @query_strategy: QueryStrategy
4
+
5
+ attr_reader connection: Connection
6
+
7
+ def initialize: (Connection connection, QueryStrategy query_strategy) -> void
8
+
9
+ def fetch_indexes_for_subscriptions: (Hash[Integer, Hash[Symbol, untyped]] grouped_opts) ->
10
+ Hash[Integer, Array[EventGlobalIndex::SubscriptionRepr]]
11
+
12
+ def global_positions_from_db: (Array[Event] events) -> Array[Integer]
13
+
14
+ def index_events: (Array[Hash[String, untyped]] raw_events, Array[Partition] affected_partitions,
15
+ Integer stream_index_id) -> Array[EventGlobalIndex::WriteApiRepr]
16
+
17
+ def max_global_position: -> Integer?
18
+
19
+ def resolve_indexes: (Array[EventGlobalIndex::ReadApiRepr] | Array[EventGlobalIndex::SubscriptionRepr] indexes,
20
+ ?direction: (String | Symbol)?, resolve_link_tos: bool) -> Array[Hash[String, untyped]]
21
+
22
+ private
23
+
24
+ def deserialize: (PG::Result pg_result, ?repr: Symbol?) ->
25
+ (
26
+ Array[EventGlobalIndex] |
27
+ Array[EventGlobalIndex::ReadApiRepr] |
28
+ Array[EventGlobalIndex::SubscriptionRepr] |
29
+ Array[EventGlobalIndex::WriteApiRepr] |
30
+ Array[EventGlobalIndex::RevisionCheckRepr]
31
+ )
32
+
33
+ def links_resolver: -> LinksResolver
34
+
35
+ def partition_queries: -> PartitionQueries
36
+ end
37
+ end
@@ -0,0 +1,50 @@
1
+ module PgEventstore
2
+ class IndexFilteringQueries
3
+ @query_strategy: QueryStrategy
4
+
5
+ attr_reader connection: Connection
6
+
7
+ def initialize: (Connection connection, QueryStrategy query_strategy) -> void
8
+
9
+ def compute_read_api_chunks_repo: (
10
+ Array[EventGlobalIndex::ReadApiRepr] indexes,
11
+ bool resolve_link_tos
12
+ ) -> Chunks::Repository
13
+
14
+ def fetch_grouped_indexes_for_read_api: (
15
+ QueryBuilders::Filters::Collection filters_collection,
16
+ QueryBuilders::ReadCursor::StreamCursor cursor
17
+ ) -> Array[EventGlobalIndex::ReadApiRepr]
18
+
19
+ def fetch_indexes_for_read_api: (
20
+ QueryBuilders::Filters::Collection filters_collection,
21
+ QueryBuilders::ReadCursor::StreamCursor cursor
22
+ ) -> Array[EventGlobalIndex::ReadApiRepr]
23
+
24
+ def fetch_indexes_for_revision_validation: (
25
+ Stream stream,
26
+ Array[
27
+ Commands::RevisionCheck::ExpectedRevision::EventTypeRevision |
28
+ Commands::RevisionCheck::ExpectedRevision::EventTypeRevisionWithMarkers |
29
+ Commands::RevisionCheck::ExpectedRevision::MarkersRevision
30
+ ] expected_revisions
31
+ ) -> Array[EventGlobalIndex::RevisionCheckRepr]
32
+
33
+ private
34
+
35
+ def deserialize: (PG::Result pg_result, ?repr: Symbol?) ->
36
+ (
37
+ Array[EventGlobalIndex] |
38
+ Array[EventGlobalIndex::ReadApiRepr] |
39
+ Array[EventGlobalIndex::SubscriptionRepr] |
40
+ Array[EventGlobalIndex::WriteApiRepr] |
41
+ Array[EventGlobalIndex::RevisionCheckRepr]
42
+ )
43
+
44
+ def expand_event_types: (
45
+ QueryBuilders::Filters::Collection filters_collection
46
+ ) -> Array[QueryBuilders::Filters::FilterRow | QueryBuilders::Filters::MarkerFilterRow]
47
+
48
+ def partition_queries: -> PartitionQueries
49
+ end
50
+ end
@@ -1,19 +1,15 @@
1
1
  module PgEventstore
2
2
  class LinksResolver
3
- # _@param_ `connection`
4
- def initialize: (PgEventstore::Connection connection) -> void
3
+ @query_strategy: QueryStrategy
5
4
 
6
- # _@param_ `raw_events`
7
- def resolve: (::Array[::Hash[untyped, untyped]] raw_events) -> ::Array[::Hash[untyped, untyped]]
5
+ attr_accessor connection: Connection
8
6
 
9
- # _@param_ `link_events` — partition id to link events association
10
- #
11
- # _@return_ — original events
12
- def load_original_events: (::Hash[Integer, ::Array[::Hash[untyped, untyped]]] link_events) -> ::Array[::Hash[untyped, untyped]]
7
+ def initialize: (Connection connection, QueryStrategy query_strategy) -> void
13
8
 
14
- def partition_queries: () -> PgEventstore::PartitionQueries
9
+ def resolve: (::Array[::Hash[String, untyped]] raw_events) -> ::Array[::Hash[String, untyped]]
15
10
 
16
- # Returns the value of attribute connection.
17
- attr_accessor connection: PgEventstore::Connection
11
+ def load_original_events: (::Hash[Integer, ::Array[::Hash[String, untyped]]] link_events) -> ::Array[::Hash[String, untyped]]
12
+
13
+ def partition_queries: () -> PartitionQueries
18
14
  end
19
15
  end