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,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
- def multiple: () { () -> untyped } -> untyped
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,7 +1,7 @@
1
1
  module PgEventstore
2
2
  module Commands
3
3
  class Multiple < PgEventstore::AbstractCommand
4
- def call: () { () -> untyped } -> untyped
4
+ def call: (read_only: bool) { () -> untyped } -> untyped
5
5
  end
6
6
  end
7
7
  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
@@ -1,25 +1,20 @@
1
1
  module PgEventstore
2
2
  module Commands
3
- class SystemStreamReadPaginated < 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 SystemStreamReadPaginated < 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_ `direction`
17
- def calc_next_position: (::Array[PgEventstore::Event] events, (String | Symbol)? direction) -> Integer
10
+ def end_reached?: (::Array[Event] events, Integer max_count) -> bool
11
+
12
+ def calc_next_position: (::Array[Event] events, (String | Symbol)? direction) -> Integer
18
13
 
19
14
  # _@param_ `direction`
20
15
  def forwards?: ((String | Symbol)? direction) -> bool
21
16
 
22
- def read_cmd: () -> PgEventstore::Commands::Read
17
+ def read_cmd: () -> Commands::Read
23
18
  end
24
19
  end
25
20
  end
@@ -1,9 +1,14 @@
1
1
  module PgEventstore
2
- class Config
3
- include PgEventstore::Extensions::OptionsExtension
2
+ class Config < BasicConfig
3
+ module NodeRole
4
+ PRIMARY: Symbol
5
+ REPLICA: Symbol
6
+ STANDALONE: Symbol
4
7
 
5
- # _@param_ `name` — config's name. Its value matches the appropriate key in PgEventstore.config hash
6
- def initialize: (name: Symbol, **untyped options) -> void
8
+ def self.maintainable: -> Array[Symbol]
9
+
10
+ def self.writable: -> Array[Symbol]
11
+ end
7
12
 
8
13
  def connection_options: () -> ::Hash[untyped, untyped]
9
14
 
@@ -21,8 +26,6 @@ module PgEventstore
21
26
  # _@param_ `options`
22
27
  def init_default_values: (::Hash[untyped, untyped] options) -> void
23
28
 
24
- attr_reader name: untyped
25
-
26
29
  attr_accessor pg_uri: String
27
30
 
28
31
  # _@return_ — Number of events to return in one response when reading from a stream
@@ -51,5 +54,11 @@ module PgEventstore
51
54
  attr_accessor subscriptions_set_retries_interval: Integer
52
55
 
53
56
  attr_accessor subscription_graceful_shutdown_timeout: Integer | Float
57
+
58
+ attr_accessor events_subscription_position_update_interval: Integer | Float
59
+
60
+ attr_accessor eventstore_role: Symbol
61
+
62
+ attr_accessor max_events_to_replicate: Integer
54
63
  end
55
64
  end
@@ -1,32 +1,25 @@
1
1
  module PgEventstore
2
2
  class Connection
3
- module Ruby30Patch
4
- end
3
+ @pool: ConnectionPool[PgConnection]?
5
4
 
6
- include PgEventstore::Connection::Ruby30Patch
5
+ attr_accessor uri: String
6
+ attr_accessor pool_size: Integer
7
+ attr_accessor pool_timeout: Integer
7
8
 
8
- # _@param_ `uri` — PostgreSQL connection URI. Example: "postgresql://postgres:postgres@localhost:5432/eventstore"
9
- #
10
- # _@param_ `pool_size` — Connection pool size
11
- #
12
- # _@param_ `pool_timeout` — Connection pool timeout in seconds
13
9
  def initialize: (uri: String, ?pool_size: Integer, ?pool_timeout: Integer) -> void
14
10
 
15
- def shutdown: -> untyped
11
+ def discard_current_connection: -> void
16
12
 
17
- def with: () { (PG::Connection connection) -> untyped } -> untyped
13
+ def establish_connection: -> void
18
14
 
19
- def init_pool: () -> ConnectionPool[untyped]
15
+ def shutdown: -> void
20
16
 
21
- def pg_type_registry: () -> PG::BasicTypeRegistry
17
+ def with: () { (PgConnection connection) -> untyped } -> untyped
22
18
 
23
- # Returns the value of attribute uri.
24
- attr_accessor uri: String
19
+ private
25
20
 
26
- # Returns the value of attribute pool_size.
27
- attr_accessor pool_size: Integer
21
+ def init_pool: () -> ConnectionPool[PgConnection]
28
22
 
29
- # Returns the value of attribute pool_timeout.
30
- attr_accessor pool_timeout: Integer
23
+ def pg_type_registry: () -> PG::BasicTypeRegistry
31
24
  end
32
25
  end