pg_eventstore 1.10.0 → 1.12.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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/docs/reading_events.md +98 -0
  4. data/lib/pg_eventstore/client.rb +22 -4
  5. data/lib/pg_eventstore/commands/all_stream_read_grouped.rb +69 -0
  6. data/lib/pg_eventstore/commands/regular_stream_read_grouped.rb +31 -0
  7. data/lib/pg_eventstore/commands.rb +2 -0
  8. data/lib/pg_eventstore/errors.rb +10 -0
  9. data/lib/pg_eventstore/partition.rb +23 -0
  10. data/lib/pg_eventstore/queries/event_queries.rb +18 -0
  11. data/lib/pg_eventstore/queries/partition_queries.rb +21 -0
  12. data/lib/pg_eventstore/queries.rb +2 -0
  13. data/lib/pg_eventstore/query_builders/basic_filtering.rb +27 -0
  14. data/lib/pg_eventstore/query_builders/events_filtering.rb +47 -31
  15. data/lib/pg_eventstore/query_builders/partitions_filtering.rb +83 -0
  16. data/lib/pg_eventstore/sql_builder.rb +10 -0
  17. data/lib/pg_eventstore/subscriptions/callback_handlers/events_processor_handlers.rb +2 -2
  18. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +3 -3
  19. data/lib/pg_eventstore/subscriptions/queries/subscription_queries.rb +1 -9
  20. data/lib/pg_eventstore/utils.rb +27 -8
  21. data/lib/pg_eventstore/version.rb +1 -1
  22. data/lib/pg_eventstore/web/application.rb +39 -10
  23. data/lib/pg_eventstore/web/paginator/helpers.rb +11 -3
  24. data/lib/pg_eventstore/web/public/javascripts/pg_eventstore.js +41 -4
  25. data/lib/pg_eventstore/web/public/stylesheets/pg_eventstore.css +12 -0
  26. data/lib/pg_eventstore/web/views/home/partials/event_filter.erb +5 -1
  27. data/lib/pg_eventstore/web/views/home/partials/events.erb +5 -5
  28. data/lib/pg_eventstore/web/views/home/partials/stream_filter.erb +15 -3
  29. data/lib/pg_eventstore/web/views/subscriptions/index.erb +2 -2
  30. data/lib/pg_eventstore.rb +1 -0
  31. data/sig/pg_eventstore/client.rbs +2 -0
  32. data/sig/pg_eventstore/commands/all_stream_read_grouped.rbs +16 -0
  33. data/sig/pg_eventstore/commands/regular_stream_read_grouped.rbs +8 -0
  34. data/sig/pg_eventstore/errors.rbs +8 -0
  35. data/sig/pg_eventstore/partition.rbs +15 -0
  36. data/sig/pg_eventstore/queries/event_queries.rbs +2 -0
  37. data/sig/pg_eventstore/queries/partition_queries.rbs +6 -0
  38. data/sig/pg_eventstore/query_builders/basic_filtering.rbs +15 -0
  39. data/sig/pg_eventstore/query_builders/events_filtering_query.rbs +17 -17
  40. data/sig/pg_eventstore/query_builders/partitions_filtering.rbs +21 -0
  41. data/sig/pg_eventstore/sql_builder.rbs +1 -1
  42. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rbs +2 -2
  43. data/sig/pg_eventstore/utils.rbs +4 -0
  44. data/sig/pg_eventstore/web/application.rbs +6 -0
  45. data/sig/pg_eventstore/web/paginator/helpers.rbs +2 -0
  46. metadata +13 -6
@@ -10,6 +10,8 @@ module PgEventstore
10
10
  # _@param_ `event`
11
11
  def event_exists?: (PgEventstore::Event event) -> bool
12
12
 
13
+ def grouped_events: (Stream stream, Array[Hash[untyped, untyped]] options_by_event_type, **untyped options)-> Array[Event]
14
+
13
15
  # _@param_ `events`
14
16
  def ids_from_db: (::Array[PgEventstore::Event] events) -> ::Array[String]
15
17
 
@@ -39,6 +39,8 @@ module PgEventstore
39
39
  # _@return_ — partition attributes
40
40
  def context_partition: (PgEventstore::Stream stream) -> ::Hash[untyped, untyped]?
41
41
 
42
+ def partitions: (Array[Hash[Symbol, String | nil]] stream_filters, Array[String] event_filters)-> Array[Partition]
43
+
42
44
  # _@param_ `stream`
43
45
  #
44
46
  # _@return_ — partition attributes
@@ -70,5 +72,9 @@ module PgEventstore
70
72
 
71
73
  # Returns the value of attribute connection.
72
74
  attr_accessor connection: PgEventstore::Connection
75
+
76
+ private
77
+
78
+ def deserialize: (Hash[untyped, untyped] attrs)-> Partition
73
79
  end
74
80
  end
@@ -0,0 +1,15 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ class BasicFiltering
4
+ @sql_builder: SQLBuilder
5
+
6
+ def initialize: -> void
7
+
8
+ def to_exec_params: -> [String, Array[untyped]]
9
+
10
+ def to_sql_builder: -> SQLBuilder
11
+
12
+ def to_table_name: -> String
13
+ end
14
+ end
15
+ end
@@ -1,39 +1,37 @@
1
1
  module PgEventstore
2
2
  module QueryBuilders
3
3
  # @!visibility private
4
- class EventsFiltering
4
+ class EventsFiltering < BasicFiltering
5
5
  DEFAULT_LIMIT: Integer
6
6
  SQL_DIRECTIONS: Hash[String | Symbol, String]
7
7
  SUBSCRIPTIONS_OPTIONS: ::Array[Symbol]
8
8
 
9
- @sql_builder: PgEventstore::SQLBuilder
9
+ TABLE_NAME: String
10
+
11
+ def self.events_filtering: (Stream stream, ::Hash[untyped, untyped] options) -> EventsFiltering
12
+
13
+ def self.extract_event_types_filter: (Hash[untyped, untyped] options) -> Array[String]
14
+
15
+ def self.extract_streams_filter: (Hash[untyped, untyped] options) -> Array[Hash[untyped, untyped]]
10
16
 
11
- def self.events_filtering: (PgEventstore::Stream stream, ::Hash[untyped, untyped] options) -> PgEventstore::QueryBuilders::EventsFiltering
12
-
13
17
  # _@param_ `options`
14
- def self.subscriptions_events_filtering: (::Hash[untyped, untyped] options) -> PgEventstore::QueryBuilders::EventsFiltering
18
+ def self.subscriptions_events_filtering: (::Hash[untyped, untyped] options) -> EventsFiltering
15
19
 
16
20
  # _@param_ `options`
17
- def self.all_stream_filtering: (::Hash[untyped, untyped] options) -> PgEventstore::QueryBuilders::EventsFiltering
21
+ def self.all_stream_filtering: (::Hash[untyped, untyped] options) -> EventsFiltering
18
22
 
19
23
  # _@param_ `stream`
20
24
  #
21
25
  # _@param_ `options`
22
- def self.specific_stream_filtering: (PgEventstore::Stream stream, ::Hash[untyped, untyped] options) -> PgEventstore::QueryBuilders::EventsFiltering
26
+ def self.specific_stream_filtering: (Stream stream, ::Hash[untyped, untyped] options) -> EventsFiltering
23
27
 
24
- def self.system_stream_filtering: (PgEventstore::Stream stream, Hash[untyped, untyped] options) -> PgEventstore::QueryBuilders::EventsFiltering
28
+ def self.system_stream_filtering: (Stream stream, Hash[untyped, untyped] options) -> EventsFiltering
25
29
 
26
30
  def initialize: () -> void
27
31
 
28
- # _@param_ `context`
29
- #
30
- # _@param_ `stream_name`
31
- #
32
- # _@param_ `stream_id`
33
32
  def add_stream_attrs: (?context: String?, ?stream_name: String?, ?stream_id: String?) -> void
34
33
 
35
- # _@param_ `event_types`
36
- def add_event_types: (::Array[String]? event_types) -> void
34
+ def add_event_types: (::Array[String] event_types) -> void
37
35
 
38
36
  # _@param_ `revision`
39
37
  #
@@ -54,9 +52,11 @@ module PgEventstore
54
52
  # _@param_ `limit`
55
53
  def add_limit: (Integer? limit) -> void
56
54
 
57
- def to_sql_builder: () -> PgEventstore::SQLBuilder
55
+ def set_source: (String table_name)-> void
56
+
57
+ def to_sql_builder: () -> SQLBuilder
58
58
 
59
- def to_exec_params: () -> ::Array[untyped]
59
+ def to_exec_params: () -> [String, Array[untyped]]
60
60
 
61
61
  # _@param_ `stream_attrs`
62
62
  def correct_stream_filter?: (::Hash[untyped, untyped] stream_attrs) -> bool
@@ -0,0 +1,21 @@
1
+ module PgEventstore
2
+ module QueryBuilders
3
+ class PartitionsFiltering < BasicFiltering
4
+ TABLE_NAME: String
5
+
6
+ def self.extract_event_types_filter: (Hash[untyped, untyped] options) -> Array[String]
7
+
8
+ def self.extract_streams_filter: (Hash[untyped, untyped] options) -> Array[Hash[untyped, untyped]]
9
+
10
+ def add_event_types: (::Array[String] event_types) -> void
11
+
12
+ def add_stream_attrs: (?context: String?, ?stream_name: String?) -> void
13
+
14
+ def with_event_types: -> void
15
+
16
+ private
17
+
18
+ def correct_stream_filter?: (::Hash[untyped, untyped] stream_attrs) -> bool
19
+ end
20
+ end
21
+ end
@@ -46,7 +46,7 @@ module PgEventstore
46
46
 
47
47
  def remove_group: () -> self
48
48
 
49
- def to_exec_params: () -> ::Array[(String | ::Array[untyped])]
49
+ def to_exec_params: () -> [String, ::Array[untyped]]
50
50
 
51
51
  def positional_values: () -> ::Array[Object]
52
52
 
@@ -4,11 +4,11 @@ module PgEventstore
4
4
 
5
5
  def self.update_subscription_stats: (PgEventstore::Subscription subscription, PgEventstore::SubscriptionHandlerPerformance stats, Integer current_position) -> void
6
6
 
7
- def self.update_subscription_error: (PgEventstore::Subscription subscription, StandardError error) -> void
7
+ def self.update_subscription_error: (PgEventstore::Subscription subscription, PgEventstore::WrappedException error) -> void
8
8
 
9
9
  def self.restart_events_processor: (PgEventstore::Subscription subscription, _RestartTerminator? restart_terminator,
10
10
  _FailedSubscriptionNotifier? failed_subscription_notifier, PgEventstore::EventsProcessor events_processor,
11
- StandardError error) -> void
11
+ PgEventstore::WrappedException error) -> void
12
12
 
13
13
  def self.update_subscription_chunk_stats: (PgEventstore::Subscription subscription, Integer global_position) -> void
14
14
 
@@ -20,5 +20,9 @@ module PgEventstore
20
20
  def self.underscore_str: (String str) -> String
21
21
 
22
22
  def self.original_global_position: (Hash[untyped, untyped] raw_event) -> Integer
23
+
24
+ def self.unwrap_exception: (PgEventstore::WrappedException | StandardError wrapped_exception)-> StandardError
25
+
26
+ def self.wrap_exception: (StandardError exception, **untyped extra)-> PgEventstore::WrappedException
23
27
  end
24
28
  end
@@ -5,6 +5,8 @@ module PgEventstore
5
5
  COOKIES_FLASH_MESSAGE_KEY: String
6
6
  DEFAULT_ADMIN_UI_CONFIG: Symbol
7
7
 
8
+ EMPTY_STRING_SIGN: String
9
+
8
10
  def asset_url: (String path) -> String
9
11
 
10
12
  def connection: -> PgEventstore::Connection
@@ -13,6 +15,8 @@ module PgEventstore
13
15
 
14
16
  def current_config=: (untyped val) -> void
15
17
 
18
+ def escape_empty_string: (String? string) -> String?
19
+
16
20
  def events_filter: -> Array[String]?
17
21
 
18
22
  def flash_message=: (({ message: String, kind: String }) val)-> String
@@ -30,6 +34,8 @@ module PgEventstore
30
34
  def streams_filter: -> Array[Hash[untyped, untyped]]?
31
35
 
32
36
  def system_stream: -> String?
37
+
38
+ def unescape_empty_string: (String? string) -> String?
33
39
  end
34
40
  end
35
41
  end
@@ -2,6 +2,8 @@ module PgEventstore
2
2
  module Web
3
3
  module Paginator
4
4
  module Helpers
5
+ def empty_characters_fallback: (String str)-> String
6
+
5
7
  # _@param_ `collection`
6
8
  def previous_page_link: (PgEventstore::Web::Paginator::BaseCollection collection) -> String
7
9
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_eventstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Dzyzenko
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-04-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pg
@@ -116,6 +115,7 @@ files:
116
115
  - lib/pg_eventstore/cli/wait_for_subscriptions_set_shutdown.rb
117
116
  - lib/pg_eventstore/client.rb
118
117
  - lib/pg_eventstore/commands.rb
118
+ - lib/pg_eventstore/commands/all_stream_read_grouped.rb
119
119
  - lib/pg_eventstore/commands/append.rb
120
120
  - lib/pg_eventstore/commands/delete_event.rb
121
121
  - lib/pg_eventstore/commands/delete_stream.rb
@@ -124,6 +124,7 @@ files:
124
124
  - lib/pg_eventstore/commands/link_to.rb
125
125
  - lib/pg_eventstore/commands/multiple.rb
126
126
  - lib/pg_eventstore/commands/read.rb
127
+ - lib/pg_eventstore/commands/regular_stream_read_grouped.rb
127
128
  - lib/pg_eventstore/commands/regular_stream_read_paginated.rb
128
129
  - lib/pg_eventstore/commands/system_stream_read_paginated.rb
129
130
  - lib/pg_eventstore/config.rb
@@ -139,6 +140,7 @@ files:
139
140
  - lib/pg_eventstore/extensions/using_connection_extension.rb
140
141
  - lib/pg_eventstore/maintenance.rb
141
142
  - lib/pg_eventstore/middleware.rb
143
+ - lib/pg_eventstore/partition.rb
142
144
  - lib/pg_eventstore/pg_connection.rb
143
145
  - lib/pg_eventstore/queries.rb
144
146
  - lib/pg_eventstore/queries/event_queries.rb
@@ -146,7 +148,9 @@ files:
146
148
  - lib/pg_eventstore/queries/maintenance_queries.rb
147
149
  - lib/pg_eventstore/queries/partition_queries.rb
148
150
  - lib/pg_eventstore/queries/transaction_queries.rb
151
+ - lib/pg_eventstore/query_builders/basic_filtering.rb
149
152
  - lib/pg_eventstore/query_builders/events_filtering.rb
153
+ - lib/pg_eventstore/query_builders/partitions_filtering.rb
150
154
  - lib/pg_eventstore/rspec/has_option_matcher.rb
151
155
  - lib/pg_eventstore/rspec/test_helpers.rb
152
156
  - lib/pg_eventstore/sql_builder.rb
@@ -271,6 +275,7 @@ files:
271
275
  - sig/pg_eventstore/cli/try_unlock_subscriptions_set.rbs
272
276
  - sig/pg_eventstore/cli/wait_for_subscriptions_set_shutdown.rbs
273
277
  - sig/pg_eventstore/client.rbs
278
+ - sig/pg_eventstore/commands/all_stream_read_grouped.rbs
274
279
  - sig/pg_eventstore/commands/append.rbs
275
280
  - sig/pg_eventstore/commands/delete_event.rbs
276
281
  - sig/pg_eventstore/commands/delete_stream.rbs
@@ -279,6 +284,7 @@ files:
279
284
  - sig/pg_eventstore/commands/link_to.rbs
280
285
  - sig/pg_eventstore/commands/multiple.rbs
281
286
  - sig/pg_eventstore/commands/read.rbs
287
+ - sig/pg_eventstore/commands/regular_stream_read_grouped.rbs
282
288
  - sig/pg_eventstore/commands/regular_stream_read_paginated.rbs
283
289
  - sig/pg_eventstore/commands/system_stream_read_paginated.rbs
284
290
  - sig/pg_eventstore/config.rbs
@@ -294,6 +300,7 @@ files:
294
300
  - sig/pg_eventstore/extensions/using_connection_extension.rbs
295
301
  - sig/pg_eventstore/maintenance.rbs
296
302
  - sig/pg_eventstore/middleware.rbs
303
+ - sig/pg_eventstore/partition.rbs
297
304
  - sig/pg_eventstore/pg_connection.rbs
298
305
  - sig/pg_eventstore/queries.rbs
299
306
  - sig/pg_eventstore/queries/event_queries.rbs
@@ -301,7 +308,9 @@ files:
301
308
  - sig/pg_eventstore/queries/maintenance_queries.rbs
302
309
  - sig/pg_eventstore/queries/partition_queries.rbs
303
310
  - sig/pg_eventstore/queries/transaction_queries.rbs
311
+ - sig/pg_eventstore/query_builders/basic_filtering.rbs
304
312
  - sig/pg_eventstore/query_builders/events_filtering_query.rbs
313
+ - sig/pg_eventstore/query_builders/partitions_filtering.rbs
305
314
  - sig/pg_eventstore/sql_builder.rbs
306
315
  - sig/pg_eventstore/stream.rbs
307
316
  - sig/pg_eventstore/subscriptions/basic_runner.rbs
@@ -368,7 +377,6 @@ metadata:
368
377
  homepage_uri: https://github.com/yousty/pg_eventstore
369
378
  source_code_uri: https://github.com/yousty/pg_eventstore
370
379
  changelog_uri: https://github.com/yousty/pg_eventstore/blob/main/CHANGELOG.md
371
- post_install_message:
372
380
  rdoc_options: []
373
381
  require_paths:
374
382
  - lib
@@ -383,8 +391,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
383
391
  - !ruby/object:Gem::Version
384
392
  version: '0'
385
393
  requirements: []
386
- rubygems_version: 3.5.3
387
- signing_key:
394
+ rubygems_version: 3.6.7
388
395
  specification_version: 4
389
396
  summary: EventStore implementation using PostgreSQL
390
397
  test_files: []