pg_eventstore 0.3.0 → 0.5.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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/CODE_OF_CONDUCT.md +1 -1
  4. data/README.md +2 -0
  5. data/db/migrations/10_create_subscription_commands.sql +15 -0
  6. data/db/migrations/11_create_subscriptions_set_commands.sql +15 -0
  7. data/db/migrations/12_improve_events_indexes.sql +1 -0
  8. data/db/migrations/13_remove_duplicated_index.sql +1 -0
  9. data/db/migrations/9_create_subscriptions.sql +46 -0
  10. data/docs/configuration.md +42 -21
  11. data/docs/linking_events.md +96 -0
  12. data/docs/reading_events.md +56 -0
  13. data/docs/subscriptions.md +170 -0
  14. data/lib/pg_eventstore/callbacks.rb +122 -0
  15. data/lib/pg_eventstore/client.rb +32 -2
  16. data/lib/pg_eventstore/commands/append.rb +3 -11
  17. data/lib/pg_eventstore/commands/event_modifiers/prepare_link_event.rb +22 -0
  18. data/lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb +24 -0
  19. data/lib/pg_eventstore/commands/link_to.rb +33 -0
  20. data/lib/pg_eventstore/commands/regular_stream_read_paginated.rb +63 -0
  21. data/lib/pg_eventstore/commands/system_stream_read_paginated.rb +62 -0
  22. data/lib/pg_eventstore/commands.rb +5 -0
  23. data/lib/pg_eventstore/config.rb +35 -3
  24. data/lib/pg_eventstore/errors.rb +80 -0
  25. data/lib/pg_eventstore/{pg_result_deserializer.rb → event_deserializer.rb} +10 -22
  26. data/lib/pg_eventstore/extensions/callbacks_extension.rb +95 -0
  27. data/lib/pg_eventstore/extensions/options_extension.rb +69 -29
  28. data/lib/pg_eventstore/extensions/using_connection_extension.rb +35 -0
  29. data/lib/pg_eventstore/pg_connection.rb +20 -3
  30. data/lib/pg_eventstore/queries/event_queries.rb +18 -34
  31. data/lib/pg_eventstore/queries/event_type_queries.rb +24 -0
  32. data/lib/pg_eventstore/queries/preloader.rb +37 -0
  33. data/lib/pg_eventstore/queries/stream_queries.rb +14 -1
  34. data/lib/pg_eventstore/queries/subscription_command_queries.rb +81 -0
  35. data/lib/pg_eventstore/queries/subscription_queries.rb +166 -0
  36. data/lib/pg_eventstore/queries/subscriptions_set_command_queries.rb +76 -0
  37. data/lib/pg_eventstore/queries/subscriptions_set_queries.rb +89 -0
  38. data/lib/pg_eventstore/queries.rb +7 -0
  39. data/lib/pg_eventstore/query_builders/events_filtering_query.rb +17 -22
  40. data/lib/pg_eventstore/sql_builder.rb +54 -10
  41. data/lib/pg_eventstore/stream.rb +2 -1
  42. data/lib/pg_eventstore/subscriptions/basic_runner.rb +220 -0
  43. data/lib/pg_eventstore/subscriptions/command_handlers/subscription_feeder_commands.rb +52 -0
  44. data/lib/pg_eventstore/subscriptions/command_handlers/subscription_runners_commands.rb +68 -0
  45. data/lib/pg_eventstore/subscriptions/commands_handler.rb +62 -0
  46. data/lib/pg_eventstore/subscriptions/events_processor.rb +72 -0
  47. data/lib/pg_eventstore/subscriptions/runner_state.rb +45 -0
  48. data/lib/pg_eventstore/subscriptions/subscription.rb +141 -0
  49. data/lib/pg_eventstore/subscriptions/subscription_feeder.rb +171 -0
  50. data/lib/pg_eventstore/subscriptions/subscription_handler_performance.rb +39 -0
  51. data/lib/pg_eventstore/subscriptions/subscription_runner.rb +125 -0
  52. data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +38 -0
  53. data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +105 -0
  54. data/lib/pg_eventstore/subscriptions/subscriptions_set.rb +97 -0
  55. data/lib/pg_eventstore/tasks/setup.rake +5 -1
  56. data/lib/pg_eventstore/utils.rb +66 -0
  57. data/lib/pg_eventstore/version.rb +1 -1
  58. data/lib/pg_eventstore.rb +19 -1
  59. metadata +38 -4
data/lib/pg_eventstore.rb CHANGED
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'pg_eventstore/version'
4
+ require_relative 'pg_eventstore/utils'
5
+ require_relative 'pg_eventstore/callbacks'
4
6
  require_relative 'pg_eventstore/extensions/options_extension'
7
+ require_relative 'pg_eventstore/extensions/callbacks_extension'
8
+ require_relative 'pg_eventstore/extensions/using_connection_extension'
5
9
  require_relative 'pg_eventstore/event_class_resolver'
6
10
  require_relative 'pg_eventstore/config'
7
11
  require_relative 'pg_eventstore/event'
8
- require_relative 'pg_eventstore/sql_builder'
9
12
  require_relative 'pg_eventstore/stream'
10
13
  require_relative 'pg_eventstore/client'
11
14
  require_relative 'pg_eventstore/connection'
12
15
  require_relative 'pg_eventstore/errors'
13
16
  require_relative 'pg_eventstore/middleware'
17
+ require_relative 'pg_eventstore/subscriptions/subscriptions_manager'
14
18
 
15
19
  module PgEventstore
16
20
  class << self
@@ -58,6 +62,20 @@ module PgEventstore
58
62
  end
59
63
  end
60
64
 
65
+ # @param config_name [Symbol]
66
+ # @param subscription_set [String]
67
+ # @param max_retries [Integer, nil] max number of retries of failed SubscriptionsSet
68
+ # @param retries_interval [Integer, nil] a delay between retries of failed SubscriptionsSet
69
+ # @return [PgEventstore::SubscriptionManager]
70
+ def subscriptions_manager(config_name = :default, subscription_set:, max_retries: nil, retries_interval: nil)
71
+ SubscriptionsManager.new(
72
+ config: config(config_name),
73
+ set_name: subscription_set,
74
+ max_retries: max_retries,
75
+ retries_interval: retries_interval
76
+ )
77
+ end
78
+
61
79
  # @param name [Symbol]
62
80
  # @return [PgEventstore::Client]
63
81
  def client(name = :default)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_eventstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Dzyzenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-24 00:00:00.000000000 Z
11
+ date: 2024-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -54,6 +54,10 @@ files:
54
54
  - db/initial/primary_and_foreign_keys.sql
55
55
  - db/initial/tables.sql
56
56
  - db/migrations/0_improve_all_stream_indexes.sql
57
+ - db/migrations/10_create_subscription_commands.sql
58
+ - db/migrations/11_create_subscriptions_set_commands.sql
59
+ - db/migrations/12_improve_events_indexes.sql
60
+ - db/migrations/13_remove_duplicated_index.sql
57
61
  - db/migrations/1_improve_specific_stream_indexes.sql
58
62
  - db/migrations/2_adjust_global_position_index.sql
59
63
  - db/migrations/3_extract_type_into_separate_table.sql
@@ -62,39 +66,69 @@ files:
62
66
  - db/migrations/6_change_events_event_type_id_null_constraint.sql
63
67
  - db/migrations/7_change_events_type_constraint.sql
64
68
  - db/migrations/8_drop_events_type.sql
69
+ - db/migrations/9_create_subscriptions.sql
65
70
  - docs/appending_events.md
66
71
  - docs/configuration.md
67
72
  - docs/events_and_streams.md
73
+ - docs/linking_events.md
68
74
  - docs/multiple_commands.md
69
75
  - docs/reading_events.md
76
+ - docs/subscriptions.md
70
77
  - docs/writing_middleware.md
71
78
  - lib/pg_eventstore.rb
72
79
  - lib/pg_eventstore/abstract_command.rb
80
+ - lib/pg_eventstore/callbacks.rb
73
81
  - lib/pg_eventstore/client.rb
74
82
  - lib/pg_eventstore/commands.rb
75
83
  - lib/pg_eventstore/commands/append.rb
84
+ - lib/pg_eventstore/commands/event_modifiers/prepare_link_event.rb
85
+ - lib/pg_eventstore/commands/event_modifiers/prepare_regular_event.rb
86
+ - lib/pg_eventstore/commands/link_to.rb
76
87
  - lib/pg_eventstore/commands/multiple.rb
77
88
  - lib/pg_eventstore/commands/read.rb
89
+ - lib/pg_eventstore/commands/regular_stream_read_paginated.rb
90
+ - lib/pg_eventstore/commands/system_stream_read_paginated.rb
78
91
  - lib/pg_eventstore/config.rb
79
92
  - lib/pg_eventstore/connection.rb
80
93
  - lib/pg_eventstore/errors.rb
81
94
  - lib/pg_eventstore/event.rb
82
95
  - lib/pg_eventstore/event_class_resolver.rb
96
+ - lib/pg_eventstore/event_deserializer.rb
83
97
  - lib/pg_eventstore/event_serializer.rb
98
+ - lib/pg_eventstore/extensions/callbacks_extension.rb
84
99
  - lib/pg_eventstore/extensions/options_extension.rb
100
+ - lib/pg_eventstore/extensions/using_connection_extension.rb
85
101
  - lib/pg_eventstore/middleware.rb
86
102
  - lib/pg_eventstore/pg_connection.rb
87
- - lib/pg_eventstore/pg_result_deserializer.rb
88
103
  - lib/pg_eventstore/queries.rb
89
104
  - lib/pg_eventstore/queries/event_queries.rb
90
105
  - lib/pg_eventstore/queries/event_type_queries.rb
106
+ - lib/pg_eventstore/queries/preloader.rb
91
107
  - lib/pg_eventstore/queries/stream_queries.rb
108
+ - lib/pg_eventstore/queries/subscription_command_queries.rb
109
+ - lib/pg_eventstore/queries/subscription_queries.rb
110
+ - lib/pg_eventstore/queries/subscriptions_set_command_queries.rb
111
+ - lib/pg_eventstore/queries/subscriptions_set_queries.rb
92
112
  - lib/pg_eventstore/queries/transaction_queries.rb
93
113
  - lib/pg_eventstore/query_builders/events_filtering_query.rb
94
114
  - lib/pg_eventstore/rspec/has_option_matcher.rb
95
115
  - lib/pg_eventstore/sql_builder.rb
96
116
  - lib/pg_eventstore/stream.rb
117
+ - lib/pg_eventstore/subscriptions/basic_runner.rb
118
+ - lib/pg_eventstore/subscriptions/command_handlers/subscription_feeder_commands.rb
119
+ - lib/pg_eventstore/subscriptions/command_handlers/subscription_runners_commands.rb
120
+ - lib/pg_eventstore/subscriptions/commands_handler.rb
121
+ - lib/pg_eventstore/subscriptions/events_processor.rb
122
+ - lib/pg_eventstore/subscriptions/runner_state.rb
123
+ - lib/pg_eventstore/subscriptions/subscription.rb
124
+ - lib/pg_eventstore/subscriptions/subscription_feeder.rb
125
+ - lib/pg_eventstore/subscriptions/subscription_handler_performance.rb
126
+ - lib/pg_eventstore/subscriptions/subscription_runner.rb
127
+ - lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb
128
+ - lib/pg_eventstore/subscriptions/subscriptions_manager.rb
129
+ - lib/pg_eventstore/subscriptions/subscriptions_set.rb
97
130
  - lib/pg_eventstore/tasks/setup.rake
131
+ - lib/pg_eventstore/utils.rb
98
132
  - lib/pg_eventstore/version.rb
99
133
  - pg_eventstore.gemspec
100
134
  homepage: https://github.com/yousty/pg_eventstore
@@ -120,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
154
  - !ruby/object:Gem::Version
121
155
  version: '0'
122
156
  requirements: []
123
- rubygems_version: 3.4.10
157
+ rubygems_version: 3.5.3
124
158
  signing_key:
125
159
  specification_version: 4
126
160
  summary: EventStore implementation using PostgreSQL