pg_eventstore 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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