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
@@ -0,0 +1,13 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ module Filters
4
+ class MarkerFilter
5
+ include Extensions::OptionsExtension
6
+ include Extensions::OptionsDefaults
7
+
8
+ attr_accessor markers: Array[String]
9
+ attr_accessor event_type: String?
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ module Filters
4
+ class MarkerFilterRow
5
+ include Extensions::OptionsExtension
6
+ include Extensions::OptionsDefaults
7
+
8
+ attr_accessor stream_filter: QueryBuilders::Filters::StreamFilter?
9
+ attr_accessor marker_filter: QueryBuilders::Filters::MarkerFilter
10
+
11
+ def ambiguous_event_type?: -> bool
12
+
13
+ def flatten: -> Array[QueryBuilders::Filters::MarkerFilterRow]
14
+
15
+ def to_filter_row: -> FilterRow
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ module Filters
4
+ class StreamFilter
5
+ include Extensions::OptionsExtension
6
+ include Extensions::OptionsDefaults
7
+
8
+ attr_accessor context: String
9
+ attr_accessor stream_name: String?
10
+ attr_accessor stream_id: String?
11
+
12
+ def context?: -> bool
13
+
14
+ def stream?: -> bool
15
+
16
+ def stream_name?: -> bool
17
+
18
+ def to_h: -> Hash[Symbol, String]
19
+
20
+ def to_partition_h: -> Hash[Symbol, String?]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,60 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ class IndexBasedEventsFiltering
4
+ include BasicFiltering
5
+
6
+ ABSTRACT_TABLE_NAME: String
7
+ DEFAULT_LIMIT: Integer
8
+
9
+ @sql_builder: SQLBuilder
10
+
11
+ def self.sql_builder_for_estimate_count: (
12
+ Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows
13
+ ) -> SQLBuilder
14
+
15
+ def self.sql_builder_for_event_type_revision_validation: (
16
+ Stream stream,
17
+ Commands::RevisionCheck::ExpectedRevision::EventTypeRevision expected_revision
18
+ ) -> SQLBuilder
19
+
20
+ def self.sql_builder_for_event_type_with_markers_revision_validation: (
21
+ Stream stream,
22
+ Commands::RevisionCheck::ExpectedRevision::EventTypeRevisionWithMarkers expected_revision
23
+ ) -> SQLBuilder
24
+
25
+ def self.sql_builder_for_markers_revision_validation: (
26
+ Stream stream,
27
+ Commands::RevisionCheck::ExpectedRevision::MarkersRevision expected_revision
28
+ ) -> SQLBuilder
29
+
30
+ def self.sql_builder_for_read_common: (
31
+ Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows,
32
+ ReadCursor::StreamCursor cursor
33
+ ) -> SQLBuilder
34
+
35
+ def self.sql_builder_for_read_grouped: (
36
+ Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows,
37
+ ReadCursor::StreamCursor cursor
38
+ ) -> SQLBuilder
39
+
40
+ def self.sql_builder_for_subscriptions: (
41
+ Array[Filters::FilterRow | Filters::MarkerFilterRow] filter_rows
42
+ ) -> SQLBuilder
43
+
44
+ def add_global_position_direction: ((String | Symbol)? direction) -> void
45
+
46
+ def add_limit: (Integer? limit) -> void
47
+
48
+ private
49
+
50
+ def self.finalize_subscription_builders: (Array[SQLBuilder] builders) -> SQLBuilder
51
+
52
+ def self.union_builders: (
53
+ Array[SQLBuilder] builders,
54
+ QueryBuilders::ReadCursor::StreamCursor cursor,
55
+ mode: Symbol,
56
+ ?requires_limit: bool
57
+ ) -> SQLBuilder
58
+ end
59
+ end
60
+ end
@@ -1,25 +1,44 @@
1
1
  module PgEventstore
2
2
  module QueryBuilders
3
- class PartitionsFiltering < BasicFiltering
3
+ class PartitionsFiltering
4
+ include BasicFiltering
5
+
4
6
  TABLE_NAME: String
5
7
 
6
- def self.extract_event_types_filter: (Hash[untyped, untyped] options) -> Array[String]
8
+ @has_event_types: Array[bool]
9
+ @has_stream_names: Array[bool]
10
+ @sql_builder: SQLBuilder
11
+ @wants_event_type: bool
12
+ @wants_stream_name: bool
13
+
14
+ def self.assemble_sql_builder: (Filters::Collection filters_collection,
15
+ ?scope: Symbol) -> SQLBuilder
16
+
17
+ def self.from_filter_row: (Filters::FilterRow filter_row,
18
+ ?scope: Symbol) -> SQLBuilder
19
+
20
+ def add_filter_row: (Filters::FilterRow filter_row) -> void
21
+
22
+ def order_by_context: -> void
23
+
24
+ def order_by_event_type: -> void
7
25
 
8
- def self.extract_streams_filter: (Hash[untyped, untyped] options) -> Array[Hash[untyped, untyped]]
26
+ def order_by_stream_name: -> void
9
27
 
10
- def self.correct_stream_filter?: (::Hash[untyped, untyped] stream_attrs) -> bool
28
+ def with_event_types: -> void
11
29
 
12
- def add_event_types: (::Array[String] event_types) -> SQLBuilder
30
+ def with_stream_names: -> void
13
31
 
14
- def add_stream_attrs: (?context: String?, ?stream_name: String?) -> SQLBuilder
32
+ def without_event_types: -> void
15
33
 
16
- def with_event_types: -> SQLBuilder
34
+ def without_stream_names: -> void
17
35
 
18
- def with_stream_names: -> SQLBuilder
36
+ private
19
37
 
20
- def without_event_types: -> SQLBuilder
38
+ def self.has_stream_name_filter?: (Filters::Collection filters_collection) -> bool
21
39
 
22
- def without_stream_names: -> SQLBuilder
40
+ def self.set_partitions_scope: (PartitionsFiltering partitions_filtering, bool has_stream_name_filters,
41
+ bool has_event_type_filters, Symbol scope) -> untyped
23
42
  end
24
43
  end
25
44
  end
@@ -0,0 +1,47 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ module ReadCursor
4
+ class StreamCursor
5
+ class RegularStreamCursor
6
+ include Extensions::OptionsExtension
7
+ include Extensions::OptionsDefaults
8
+
9
+ attr_accessor from_revision: Integer?
10
+ attr_accessor to_revision: Integer?
11
+ attr_accessor direction: String? | Symbol?
12
+ attr_accessor max_count: Integer?
13
+ end
14
+
15
+ class AllStreamCursor
16
+ include Extensions::OptionsExtension
17
+ include Extensions::OptionsDefaults
18
+
19
+ attr_accessor from_position: Integer?
20
+ attr_accessor to_position: Integer?
21
+ attr_accessor direction: String? | Symbol?
22
+ attr_accessor max_count: Integer?
23
+ end
24
+
25
+ @cursor: RegularStreamCursor | AllStreamCursor
26
+
27
+ def self.from_options: (Hash[untyped, untyped] options) -> StreamCursor
28
+
29
+ def self.from_stream_and_options: (Stream stream, Hash[untyped, untyped] options) -> StreamCursor
30
+
31
+ def initialize: (RegularStreamCursor | AllStreamCursor cursor) -> void
32
+
33
+ def direction: -> (String | Symbol)?
34
+
35
+ def from: -> Integer?
36
+
37
+ def max_count: -> Integer?
38
+
39
+ def max_count=: (Integer? val) -> void
40
+
41
+ def all_stream_cursor?: -> bool
42
+
43
+ def to: -> Integer?
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ class StreamsGlobalIndexFiltering
4
+ DEFAULT_LIMIT: Integer
5
+
6
+ PRIMARY_TABLE_NAME: String
7
+
8
+ include BasicFiltering
9
+
10
+ @sql_builder: SQLBuilder
11
+
12
+ def self.sql_builder_for_basic_pagination: (Hash[untyped, untyped] options) -> SQLBuilder
13
+
14
+ def add_filter_row: (Filters::FilterRow filter_row) -> void
15
+
16
+ def add_starting_position_direction: (Symbol? | String? direction) -> void
17
+
18
+ def from_position: (Integer? position, Symbol? | String? direction) -> void
19
+
20
+ def limit: (Integer? limit) -> void
21
+
22
+ private
23
+
24
+ def direction_operator_from: (Symbol? | String? direction) -> String
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ class SubscriptionEventsFiltering
4
+ include BasicFiltering
5
+
6
+ @from_position: Integer
7
+ @max_count: Integer
8
+ @sql_builder: SQLBuilder
9
+ @subscription_id: Integer
10
+ @to_position: Integer
11
+
12
+ def self.build: (
13
+ Integer id,
14
+ { from_position: Integer, to_position: Integer, max_count: Integer } options
15
+ ) -> SubscriptionEventsFiltering
16
+
17
+ def initialize: (Integer subscription_id) -> void
18
+
19
+ def add_limit: (Integer? limit) -> void
20
+
21
+ def from_position: (Integer? position) -> void
22
+
23
+ def to_position: (Integer? position) -> void
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ module PgEventstore
2
+ module QueryStrategy
3
+ class Async
4
+ include QueryStrategy
5
+
6
+ @connection: Connection
7
+
8
+ def initialize: (Connection connection) -> void
9
+
10
+ private
11
+
12
+ def cancel_and_drain: (PG::Connection connection) -> void
13
+
14
+ def run: (Symbol method, *untyped exec_args) -> untyped
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module PgEventstore
2
+ module QueryStrategy
3
+ class Foreground
4
+ include QueryStrategy
5
+
6
+ @connection: Connection
7
+
8
+ def initialize: (Connection connection) -> void
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module PgEventstore
2
+ module QueryStrategy
3
+ def exec: (*untyped) -> PG::Result
4
+
5
+ def exec_params: (*untyped) -> PG::Result
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ module PgEventstore
2
+ # @!visibility private
3
+ class RawEvent
4
+ include Extensions::OptionsExtension
5
+ include Extensions::OptionsDefaults
6
+
7
+ attr_accessor id: String
8
+ attr_accessor context: String
9
+ attr_accessor stream_name: String
10
+ attr_accessor stream_id: String
11
+ attr_accessor global_position: Integer
12
+ attr_accessor stream_revision: Integer
13
+ attr_accessor data: Hash[untyped, untyped]
14
+ attr_accessor metadata: Hash[untyped, untyped]
15
+ attr_accessor link_partition_id: Integer?
16
+ attr_accessor created_at: Time
17
+ attr_accessor type: String
18
+ attr_accessor link_global_position: Integer?
19
+ end
20
+ end
@@ -1,5 +1,27 @@
1
1
  module PgEventstore
2
2
  class SQLBuilder
3
+ UNION_MODES: Array[Symbol]
4
+
5
+ @from_value: (String | SQLBuilder)?
6
+ @group_values: Array[String]
7
+ @join_values: Array[untyped]
8
+ @limit_value: String? | Integer?
9
+ @offset_value: Integer?
10
+ @order_values: Array[String]
11
+ @select_values: Array[String]
12
+ @union_mode: Symbol
13
+ @union_values: Array[SQLBuilder]
14
+ @where_values: Hash[String, Array[untyped]]
15
+
16
+ def self.union_builders: (Array[SQLBuilder] builders, ?mode: Symbol) -> SQLBuilder
17
+
18
+ def self.wrap_union_builder: (SQLBuilder builder) -> SQLBuilder
19
+
20
+ attr_reader positional_values: Array[untyped]
21
+ attr_reader table_alias: String?
22
+
23
+ attr_writer positional_values_size: Integer
24
+
3
25
  def initialize: () -> void
4
26
 
5
27
  def from_sql: -> String
@@ -7,6 +29,12 @@ module PgEventstore
7
29
  # _@param_ `sql`
8
30
  def select: (String sql) -> self
9
31
 
32
+ def select_id_only: -> self
33
+
34
+ def union_builder?: -> bool
35
+
36
+ def union_mode=: (Symbol val) -> void
37
+
10
38
  def unselect: () -> self
11
39
 
12
40
  # _@param_ `sql`
@@ -19,8 +47,7 @@ module PgEventstore
19
47
  # _@param_ `arguments` — positional values
20
48
  def where_or: (String sql, *Object arguments) -> self
21
49
 
22
- # _@param_ `table_name`
23
- def from: (String | SQLBuilder table_name) -> self
50
+ def from: (String | SQLBuilder table_name, ?table_alias: String?) -> self
24
51
 
25
52
  # _@param_ `sql`
26
53
  #
@@ -33,7 +60,7 @@ module PgEventstore
33
60
  def remove_order: () -> self
34
61
 
35
62
  # _@param_ `limit`
36
- def limit: (Integer limit) -> self
63
+ def limit: (String | Integer limit) -> self
37
64
 
38
65
  def remove_limit: () -> self
39
66
 
@@ -41,7 +68,7 @@ module PgEventstore
41
68
  def offset: (Integer offset) -> self
42
69
 
43
70
  # _@param_ `another_builder`
44
- def union: (PgEventstore::SQLBuilder another_builder) -> self
71
+ def union: (SQLBuilder another_builder) -> self
45
72
 
46
73
  # _@param_ `sql`
47
74
  def group: (String sql) -> self
@@ -50,11 +77,6 @@ module PgEventstore
50
77
 
51
78
  def to_exec_params: () -> [String, ::Array[untyped]]
52
79
 
53
- def positional_values: () -> ::Array[Object]
54
-
55
- # _@param_ `val`
56
- def positional_values_size=: (Integer val) -> Integer
57
-
58
80
  def _to_exec_params: () -> [String, ::Array[untyped]]
59
81
 
60
82
  def single_query_sql: () -> String
@@ -75,6 +97,6 @@ module PgEventstore
75
97
 
76
98
  private
77
99
 
78
- def merge: (SQLBuilder builder)-> String
100
+ def merge: (SQLBuilder builder) -> String
79
101
  end
80
102
  end
@@ -1,19 +1,20 @@
1
1
  module PgEventstore
2
2
  class Stream
3
3
  KNOWN_SYSTEM_STREAMS: Array[String]
4
- SYSTEM_STREAM_PREFIX: String
5
4
  NON_EXISTING_STREAM_REVISION: Integer
6
5
 
7
- def self.all_stream: () -> PgEventstore::Stream
6
+ def self.all_stream: () -> Stream
8
7
 
9
- def self.system_stream: (String) -> PgEventstore::Stream
8
+ def self.system_stream: (String) -> Stream
10
9
 
11
- # _@param_ `context`
12
- #
13
- # _@param_ `stream_name`
14
- #
15
- # _@param_ `stream_id`
16
- def initialize: (context: String, stream_name: String, stream_id: String) -> void
10
+ attr_reader context: String
11
+ attr_reader stream_name: String
12
+ attr_reader stream_id: String
13
+ attr_reader stream_revision: Integer?
14
+ attr_reader starting_position: Integer?
15
+
16
+ def initialize: (context: String, stream_name: String, stream_id: String, ?stream_revision: Integer?,
17
+ ?starting_position: Integer?) -> void
17
18
 
18
19
  def all_stream?: () -> bool
19
20
 
@@ -21,23 +22,14 @@ module PgEventstore
21
22
 
22
23
  def deconstruct: () -> ::Array[untyped]
23
24
 
24
- # _@param_ `keys`
25
25
  def deconstruct_keys: (::Array[Symbol]? keys) -> ::Hash[Symbol, String]
26
26
 
27
27
  def to_hash: () -> ::Hash[untyped, untyped]
28
28
 
29
29
  def hash: () -> Integer
30
30
 
31
- # _@param_ `another`
32
31
  def eql?: (untyped another) -> bool
33
32
 
34
- # _@param_ `other_stream`
35
33
  def ==: (untyped other_stream) -> bool
36
-
37
- attr_accessor context: String
38
-
39
- attr_accessor stream_name: String
40
-
41
- attr_accessor stream_id: String
42
34
  end
43
35
  end
@@ -0,0 +1,14 @@
1
+ module PgEventstore
2
+ class StreamGlobalIndex
3
+ include Extensions::OptionsExtension
4
+ include Extensions::OptionsDefaults
5
+
6
+ INITIAL_STARTING_POSITION: Integer
7
+
8
+ attr_accessor id: Integer
9
+ attr_accessor partition_id: Integer
10
+ attr_accessor stream_id: String
11
+ attr_accessor stream_revision: Integer
12
+ attr_accessor starting_position: Integer
13
+ end
14
+ end
@@ -1,12 +1,13 @@
1
1
  module PgEventstore
2
2
  class EventsProcessorHandlers
3
- def self.process_event: (PgEventstore::Callbacks callbacks, _RawEventHandler handler, SynchronizedArray raw_events,
3
+ def self.consume_events: (EventsProcessorConsumer consumer, Callbacks callbacks,
4
+ Chunks::Repository events_repository,
4
5
  MonitorMixin::ConditionVariable raw_events_cond) -> void
5
6
 
6
- def self.after_runner_died: (PgEventstore::Callbacks callbacks, StandardError error) -> void
7
+ def self.after_runner_died: (Callbacks callbacks, StandardError error) -> void
7
8
 
8
- def self.before_runner_restored: (PgEventstore::Callbacks callbacks) -> void
9
+ def self.before_runner_restored: (Callbacks callbacks) -> void
9
10
 
10
- def self.change_state: (PgEventstore::Callbacks callbacks, String state) -> void
11
+ def self.change_state: (Callbacks callbacks, String state) -> void
11
12
  end
12
13
  end
@@ -0,0 +1,9 @@
1
+ module PgEventstore
2
+ class EventsSubscriptionPositionWorkerHandlers
3
+ def self.assign_subscription_position: (EventSubscriptionPositionQueries event_subscription_position_queries,
4
+ Integer | Float update_interval) -> void
5
+
6
+ def self.reindex: (EventSubscriptionPositionQueries event_subscription_position_queries,
7
+ EventsSubscriptionPositionWorker::ReindexTime next_reindex_at) -> void
8
+ end
9
+ end
@@ -2,28 +2,33 @@ module PgEventstore
2
2
  class SubscriptionFeederHandlers
3
3
  include Extensions::CallbackHandlersExtension
4
4
 
5
- def self.update_subscriptions_set_state: (PgEventstore::SubscriptionsSetLifecycle subscriptions_set_lifecycle, String state) -> void
5
+ def self.start_events_subscription_position_worker: (EventsSubscriptionPositionWorker worker) -> void
6
6
 
7
- def self.lock_subscriptions: (PgEventstore::SubscriptionsLifecycle subscriptions_lifecycle) -> void
7
+ def self.stop_events_subscription_position_worker: (EventsSubscriptionPositionWorker worker) -> void
8
8
 
9
- def self.start_runners: (PgEventstore::SubscriptionsLifecycle subscriptions_lifecycle) -> void
9
+ def self.update_subscriptions_set_state: (SubscriptionsSetLifecycle subscriptions_set_lifecycle,
10
+ String state) -> void
10
11
 
11
- def self.start_cmds_handler: (PgEventstore::CommandsHandler cmds_handler) -> void
12
+ def self.lock_subscriptions: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
12
13
 
13
- def self.persist_error_info: (PgEventstore::SubscriptionsSetLifecycle subscriptions_set_lifecycle, StandardError error) -> void
14
+ def self.start_runners: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
14
15
 
15
- def self.ping_subscriptions_set: (PgEventstore::SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
16
+ def self.start_cmds_handler: (CommandsHandler cmds_handler) -> void
16
17
 
17
- def self.feed_runners: (PgEventstore::SubscriptionsLifecycle subscriptions_lifecycle, Symbol config_name) -> void
18
+ def self.persist_error_info: (SubscriptionsSetLifecycle subscriptions_set_lifecycle, StandardError error) -> void
18
19
 
19
- def self.ping_subscriptions: (PgEventstore::SubscriptionsLifecycle subscriptions_lifecycle) -> void
20
+ def self.ping_subscriptions_set: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
20
21
 
21
- def self.stop_runners: (PgEventstore::SubscriptionsLifecycle subscriptions_lifecycle) -> void
22
+ def self.feed_runners: (SubscriptionsLifecycle subscriptions_lifecycle, Symbol config_name) -> void
22
23
 
23
- def self.reset_subscriptions_set: (PgEventstore::SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
24
+ def self.ping_subscriptions: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
24
25
 
25
- def self.stop_commands_handler: (PgEventstore::CommandsHandler cmds_handler) -> void
26
+ def self.stop_runners: (SubscriptionsLifecycle subscriptions_lifecycle) -> void
26
27
 
27
- def self.update_subscriptions_set_restarts: (PgEventstore::SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
28
+ def self.reset_subscriptions_set: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
29
+
30
+ def self.stop_commands_handler: (CommandsHandler cmds_handler) -> void
31
+
32
+ def self.update_subscriptions_set_restarts: (SubscriptionsSetLifecycle subscriptions_set_lifecycle) -> void
28
33
  end
29
34
  end
@@ -1,18 +1,26 @@
1
1
  module PgEventstore
2
2
  class SubscriptionRunnerHandlers
3
- def self.stop_position_evaluation: (SubscriptionPositionEvaluation subscription_position_evaluation,
4
- String state) -> void
3
+ def self.checkpoint: (Subscription subscription, Integer global_position) -> void
5
4
 
6
- def self.track_exec_time: (PgEventstore::SubscriptionHandlerPerformance stats, ^() -> void, Integer _current_position) -> void
5
+ def self.track_exec_time: (
6
+ SubscriptionHandlerPerformance stats, ^() -> void,
7
+ Integer _current_position,
8
+ Integer events_number
9
+ ) -> void
7
10
 
8
- def self.update_subscription_stats: (PgEventstore::Subscription subscription, PgEventstore::SubscriptionHandlerPerformance stats, Integer current_position) -> void
11
+ def self.update_subscription_stats: (
12
+ Subscription subscription,
13
+ SubscriptionHandlerPerformance stats,
14
+ Integer current_position,
15
+ Integer events_number
16
+ ) -> void
9
17
 
10
- def self.update_subscription_error: (PgEventstore::Subscription subscription, PgEventstore::WrappedException error) -> void
18
+ def self.update_subscription_error: (Subscription subscription, WrappedException error) -> void
11
19
 
12
- def self.update_subscription_chunk_stats: (PgEventstore::Subscription subscription, Integer global_position) -> void
20
+ def self.update_subscription_chunk_stats: (Subscription subscription, Integer subscription_position) -> void
13
21
 
14
- def self.update_subscription_restarts: (PgEventstore::Subscription subscription) -> void
22
+ def self.update_subscription_restarts: (Subscription subscription) -> void
15
23
 
16
- def self.update_subscription_state: (PgEventstore::Subscription subscription, String state) -> void
24
+ def self.update_subscription_state: (Subscription subscription, String state) -> void
17
25
  end
18
26
  end
@@ -0,0 +1,30 @@
1
+ module PgEventstore
2
+ class EventSubscriptionPositionQueries
3
+ ASSIGN_SUBSCRIPTION_POSITIONS_LOCK_ID: Integer
4
+ MAX_INDEX_RECORDS_TO_UPDATE_SUBSCRIPTION_POSITION: Integer
5
+ REINDEX_PERIOD: Integer
6
+ UNPROCESSED_POSITIONS_INDEX_NAME: String
7
+ UNPROCESSED_POSITIONS_INDEX_SIZE_THRESHOLD: Integer
8
+ UNPROCESSED_POSITIONS_LOCK_EXPIRES_IN: Integer
9
+
10
+ attr_reader connection: Connection
11
+
12
+ def initialize: (Connection connection) -> void
13
+
14
+ def create_unprocessed_positions: (Array[Hash[String, untyped]] raw_events) -> void
15
+
16
+ def max_subscription_position: -> Integer?
17
+
18
+ def reindex_unprocessed_positions: -> Time?
19
+
20
+ def subscription_positions_from_db: (Array[Event] events) -> Hash[Integer, Integer?]
21
+
22
+ def assign_subscription_position: -> Integer?
23
+
24
+ private
25
+
26
+ def index_size: (String index_name) -> Integer
27
+
28
+ def transaction_queries: -> TransactionQueries
29
+ end
30
+ end
@@ -1,19 +1,26 @@
1
1
  module PgEventstore
2
2
  class EventsProcessor
3
- include PgEventstore::Extensions::CallbacksExtension
3
+ include Extensions::CallbacksExtension
4
+
4
5
  extend Forwardable
5
6
 
7
+ @basic_runner: BasicRunner
8
+ @consumer: EventsProcessorConsumer
9
+ @events_repository: Chunks::Repository
10
+ @repository_cond: MonitorMixin::ConditionVariable
11
+
6
12
  %a{rbs:test:skip} def initialize: (
7
- _RawEventHandler handler,
8
13
  graceful_shutdown_timeout: Float | Integer,
14
+ consumer: EventsProcessorConsumer,
15
+ ?events_repository: Chunks::Repository,
9
16
  ?recovery_strategies: Array[RunnerRecoveryStrategy]
10
17
  ) -> void
11
18
 
12
- def feed: (::Array[::Hash[untyped, untyped]] raw_events) -> void
19
+ def feed: (Chunks::Chunk[EventGlobalIndex, Hash[String, untyped]] chunk) -> void
13
20
 
14
- def events_left_in_chunk: () -> Integer
21
+ def events_left_in_repo: () -> Integer
15
22
 
16
- def clear_chunk: () -> void
23
+ def clear_events_repository: () -> void
17
24
 
18
25
  def process_event: (::Hash[untyped, untyped] raw_event) -> void
19
26