pg_eventstore 1.2.0 → 1.3.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/pg_eventstore/subscriptions/queries/subscription_queries.rb +5 -2
- data/lib/pg_eventstore/subscriptions/queries/subscriptions_set_queries.rb +15 -0
- data/lib/pg_eventstore/subscriptions/subscription_runner_commands/reset_position.rb +3 -1
- data/lib/pg_eventstore/subscriptions/subscription_runner_commands/restore.rb +8 -0
- data/lib/pg_eventstore/version.rb +1 -1
- data/lib/pg_eventstore/web/application.rb +16 -0
- data/lib/pg_eventstore/web/paginator/event_types_collection.rb +2 -2
- data/lib/pg_eventstore/web/paginator/stream_contexts_collection.rb +5 -4
- data/lib/pg_eventstore/web/paginator/stream_names_collection.rb +2 -2
- data/lib/pg_eventstore/web/public/javascripts/pg_eventstore.js +11 -0
- data/lib/pg_eventstore/web/subscriptions/helpers.rb +15 -0
- data/lib/pg_eventstore/web/subscriptions/with_state/set_collection.rb +35 -0
- data/lib/pg_eventstore/web/subscriptions/with_state/subscriptions.rb +39 -0
- data/lib/pg_eventstore/web/subscriptions/with_state/subscriptions_set.rb +40 -0
- data/lib/pg_eventstore/web/views/home/dashboard.erb +3 -3
- data/lib/pg_eventstore/web/views/subscriptions/index.erb +13 -1
- data/lib/pg_eventstore/web.rb +3 -0
- data/pg_eventstore.gemspec +1 -1
- data/sig/pg_eventstore/subscriptions/queries/subscription_queries.rbs +1 -1
- data/sig/pg_eventstore/subscriptions/queries/subscriptions_set_queries.rbs +2 -0
- data/sig/pg_eventstore/web/subscriptions/helpers.rbs +4 -0
- data/sig/pg_eventstore/web/subscriptions/with_state/set_collection.rbs +21 -0
- data/sig/pg_eventstore/web/subscriptions/with_state/subscriptions.rbs +23 -0
- data/sig/pg_eventstore/web/subscriptions/with_state/subscriptions_set.rbs +23 -0
- metadata +18 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d3a11216fa9cddbd742f03508ab289eeb194f39380fb67719b817ddb6839a7e
|
4
|
+
data.tar.gz: 6a3f35566a0076d37087064e80cf7c79250fd2a0b1ec25b0096cd2e08121084b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1738f6653ff45eec24bbf8803bb36a80ccd2123873e4eba308a75b5be206a73a434c9aa6af7ba6c02cd1ea4c28531ca77dea2114d1a04c1584a1538d2adf603f
|
7
|
+
data.tar.gz: 2f40af96cfa32af630a89f96900d86df163f0b75781f8d30f06a304f3002577e7fa9dec831e274bc5f3d138c2fc58512fcdbf5a2713bf3928321ba10b943bc0b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [1.3.1]
|
4
|
+
- Swap "Search" button and "Add filter" button on Dashboard page
|
5
|
+
|
6
|
+
## [1.3.0]
|
7
|
+
- Add ability to filter subscriptions by state in admin UI
|
8
|
+
- Reset error-related subscription's attributes on subscription restore
|
9
|
+
- Reset total processed events number when user changes subscription's position
|
10
|
+
- Allow to search event type, stream context and stream name by substring in web UI
|
11
|
+
- Relax sinatra version requirement to v3+
|
12
|
+
|
3
13
|
## [1.2.0]
|
4
14
|
- Implement `failed_subscription_notifier` subscription hook.
|
5
15
|
|
@@ -45,10 +45,13 @@ module PgEventstore
|
|
45
45
|
pg_result.map(&method(:deserialize))
|
46
46
|
end
|
47
47
|
|
48
|
+
# @param state [String, nil]
|
48
49
|
# @return [Array<String>]
|
49
|
-
def set_collection
|
50
|
+
def set_collection(state = nil)
|
51
|
+
builder = SQLBuilder.new.from('subscriptions').select('set').group('set').order('set ASC')
|
52
|
+
builder.where('state = ?', state) if state
|
50
53
|
connection.with do |conn|
|
51
|
-
conn.
|
54
|
+
conn.exec_params(*builder.to_exec_params)
|
52
55
|
end.map { |attrs| attrs['set'] }
|
53
56
|
end
|
54
57
|
|
@@ -27,6 +27,21 @@ module PgEventstore
|
|
27
27
|
pg_result.to_a.map(&method(:deserialize))
|
28
28
|
end
|
29
29
|
|
30
|
+
# @param name [String, nil]
|
31
|
+
# @param state [String]
|
32
|
+
# @return [Array<Hash>]
|
33
|
+
def find_all_by_subscription_state(name:, state:)
|
34
|
+
builder = SQLBuilder.new.select('subscriptions_set.*').from('subscriptions_set')
|
35
|
+
builder.join('JOIN subscriptions ON subscriptions.locked_by = subscriptions_set.id')
|
36
|
+
builder.order('subscriptions_set.name ASC, subscriptions_set.id ASC')
|
37
|
+
builder.where('subscriptions_set.name = ? and subscriptions.state = ?', name, state)
|
38
|
+
builder.group('subscriptions_set.id')
|
39
|
+
pg_result = connection.with do |conn|
|
40
|
+
conn.exec_params(*builder.to_exec_params)
|
41
|
+
end
|
42
|
+
pg_result.to_a.map(&method(:deserialize))
|
43
|
+
end
|
44
|
+
|
30
45
|
# @return [Array<String>]
|
31
46
|
def set_names
|
32
47
|
builder = SQLBuilder.new.select('name').from('subscriptions_set').group('name').order('name ASC')
|
@@ -17,7 +17,9 @@ module PgEventstore
|
|
17
17
|
def exec_cmd(subscription_runner)
|
18
18
|
subscription_runner.within_state(:stopped) do
|
19
19
|
subscription_runner.clear_chunk
|
20
|
-
subscription_runner.subscription.update(
|
20
|
+
subscription_runner.subscription.update(
|
21
|
+
last_chunk_greatest_position: nil, current_position: data['position'], total_processed_events: 0
|
22
|
+
)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -7,6 +7,14 @@ module PgEventstore
|
|
7
7
|
# @param subscription_runner [PgEventstore::SubscriptionRunner]
|
8
8
|
# @return [void]
|
9
9
|
def exec_cmd(subscription_runner)
|
10
|
+
subscription_runner.within_state(:dead) do
|
11
|
+
subscription_runner.subscription.update(
|
12
|
+
restart_count: 0,
|
13
|
+
last_restarted_at: nil,
|
14
|
+
last_error: nil,
|
15
|
+
last_error_occurred_at: nil
|
16
|
+
)
|
17
|
+
end
|
10
18
|
subscription_runner.restore
|
11
19
|
end
|
12
20
|
end
|
@@ -102,6 +102,22 @@ module PgEventstore
|
|
102
102
|
erb :'subscriptions/index'
|
103
103
|
end
|
104
104
|
|
105
|
+
get '/subscriptions/:state' do
|
106
|
+
@set_collection = Subscriptions::WithState::SetCollection.new(connection, state: params[:state])
|
107
|
+
@current_set = params[:set_name] || @set_collection.names.first
|
108
|
+
subscriptions_set = Subscriptions::WithState::SubscriptionsSet.new(
|
109
|
+
connection, @current_set, state: params[:state]
|
110
|
+
).subscriptions_set
|
111
|
+
subscriptions = Subscriptions::WithState::Subscriptions.new(
|
112
|
+
connection, @current_set, state: params[:state]
|
113
|
+
).subscriptions
|
114
|
+
@association = Subscriptions::SubscriptionsToSetAssociation.new(
|
115
|
+
subscriptions_set: subscriptions_set,
|
116
|
+
subscriptions: subscriptions
|
117
|
+
)
|
118
|
+
erb :'subscriptions/index'
|
119
|
+
end
|
120
|
+
|
105
121
|
post '/change_config' do
|
106
122
|
config = params[:config]&.to_sym
|
107
123
|
config = :default unless PgEventstore.available_configs.include?(config)
|
@@ -16,7 +16,7 @@ module PgEventstore
|
|
16
16
|
where('context is not null and stream_name is not null').
|
17
17
|
group('event_type').order("event_type #{order}").limit(per_page)
|
18
18
|
sql_builder.where("event_type #{direction_operator} ?", starting_id) if starting_id
|
19
|
-
sql_builder.where('event_type ilike ?', "
|
19
|
+
sql_builder.where('event_type ilike ?', "%#{options[:query]}%")
|
20
20
|
connection.with do |conn|
|
21
21
|
conn.exec_params(*sql_builder.to_exec_params)
|
22
22
|
end.to_a
|
@@ -32,7 +32,7 @@ module PgEventstore
|
|
32
32
|
SQLBuilder.new.select('event_type').from('partitions').
|
33
33
|
where('context is not null and stream_name is not null').
|
34
34
|
where("event_type #{direction_operator} ?", starting_id).
|
35
|
-
where('event_type ilike ?', "
|
35
|
+
where('event_type ilike ?', "%#{options[:query]}%").
|
36
36
|
group('event_type').order("event_type #{order}").limit(1).offset(per_page)
|
37
37
|
|
38
38
|
connection.with do |conn|
|
@@ -12,10 +12,11 @@ module PgEventstore
|
|
12
12
|
@_collection ||=
|
13
13
|
begin
|
14
14
|
sql_builder =
|
15
|
-
SQLBuilder.new.select('context').from('partitions').
|
16
|
-
|
15
|
+
SQLBuilder.new.select('context').from('partitions').
|
16
|
+
where('stream_name is null and event_type is null').
|
17
|
+
limit(per_page).order("context #{order}")
|
17
18
|
sql_builder.where("context #{direction_operator} ?", starting_id) if starting_id
|
18
|
-
sql_builder.where('context ilike ?', "
|
19
|
+
sql_builder.where('context ilike ?', "%#{options[:query]}%")
|
19
20
|
connection.with do |conn|
|
20
21
|
conn.exec_params(*sql_builder.to_exec_params)
|
21
22
|
end.to_a
|
@@ -29,7 +30,7 @@ module PgEventstore
|
|
29
30
|
starting_id = collection.first['context']
|
30
31
|
sql_builder =
|
31
32
|
SQLBuilder.new.select('context').from('partitions').where('stream_name is null and event_type is null').
|
32
|
-
where("context #{direction_operator} ?", starting_id).where('context ilike ?', "
|
33
|
+
where("context #{direction_operator} ?", starting_id).where('context ilike ?', "%#{options[:query]}%").
|
33
34
|
limit(1).offset(per_page).order("context #{order}")
|
34
35
|
|
35
36
|
connection.with do |conn|
|
@@ -14,7 +14,7 @@ module PgEventstore
|
|
14
14
|
sql_builder =
|
15
15
|
SQLBuilder.new.select('stream_name').from('partitions').
|
16
16
|
where('event_type is null and context = ?', options[:context]).
|
17
|
-
where('stream_name ilike ?', "
|
17
|
+
where('stream_name ilike ?', "%#{options[:query]}%")
|
18
18
|
sql_builder.where("stream_name #{direction_operator} ?", starting_id) if starting_id
|
19
19
|
sql_builder.limit(per_page).order("stream_name #{order}")
|
20
20
|
connection.with do |conn|
|
@@ -31,7 +31,7 @@ module PgEventstore
|
|
31
31
|
sql_builder =
|
32
32
|
SQLBuilder.new.select('stream_name').from('partitions').
|
33
33
|
where("stream_name #{direction_operator} ?", starting_id).
|
34
|
-
where('stream_name ilike ?', "
|
34
|
+
where('stream_name ilike ?', "%#{options[:query]}%").
|
35
35
|
where('event_type is null and context = ?', options[:context]).
|
36
36
|
limit(1).offset(per_page).order("stream_name #{order}")
|
37
37
|
|
@@ -215,3 +215,14 @@ $(function(){
|
|
215
215
|
$(this).find('form').attr('action', $clickedLink.data('url'));
|
216
216
|
});
|
217
217
|
});
|
218
|
+
|
219
|
+
// Display subscriptions of the selected state
|
220
|
+
$(function(){
|
221
|
+
"use strict";
|
222
|
+
|
223
|
+
let $subscriptionsState = $('#subscriptions-state');
|
224
|
+
$subscriptionsState.change(function(){
|
225
|
+
let $selected = $(this).find('option:selected');
|
226
|
+
window.location.href = $selected.data('url');
|
227
|
+
});
|
228
|
+
});
|
@@ -13,6 +13,21 @@ module PgEventstore
|
|
13
13
|
url("/subscriptions?#{encoded_params}")
|
14
14
|
end
|
15
15
|
|
16
|
+
# @param state [String]
|
17
|
+
# @return [String]
|
18
|
+
def subscriptions_state_url(state:, **params)
|
19
|
+
params = params.compact
|
20
|
+
return url("/subscriptions/#{state}") if params.empty?
|
21
|
+
|
22
|
+
encoded_params = Rack::Utils.build_nested_query(params)
|
23
|
+
url("/subscriptions/#{state}?#{encoded_params}")
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [String, nil]
|
27
|
+
def subscriptions_state
|
28
|
+
params[:state] if PgEventstore::RunnerState::STATES.include?(params[:state])
|
29
|
+
end
|
30
|
+
|
16
31
|
# @param set_id [Integer]
|
17
32
|
# @param id [Integer]
|
18
33
|
# @param cmd [String]
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PgEventstore
|
4
|
+
module Web
|
5
|
+
module Subscriptions
|
6
|
+
module WithState
|
7
|
+
class SetCollection
|
8
|
+
# @!attribute connection
|
9
|
+
# @return [PgEventstore::Connection]
|
10
|
+
attr_reader :connection
|
11
|
+
private :connection
|
12
|
+
|
13
|
+
# @param connection [PgEventstore::Connection]
|
14
|
+
# @param state [String]
|
15
|
+
def initialize(connection, state:)
|
16
|
+
@connection = connection
|
17
|
+
@state = state
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Array<String>]
|
21
|
+
def names
|
22
|
+
@set_collection ||= subscription_queries.set_collection(@state)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# @return [PgEventstore::SubscriptionQueries]
|
28
|
+
def subscription_queries
|
29
|
+
SubscriptionQueries.new(connection)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PgEventstore
|
4
|
+
module Web
|
5
|
+
module Subscriptions
|
6
|
+
module WithState
|
7
|
+
class Subscriptions
|
8
|
+
# @!attribute connection
|
9
|
+
# @return [PgEventstore::Connection]
|
10
|
+
attr_reader :connection
|
11
|
+
private :connection
|
12
|
+
|
13
|
+
# @param connection [PgEventstore::Connection]
|
14
|
+
# @param current_set [String, nil]
|
15
|
+
# @param state [String]
|
16
|
+
def initialize(connection, current_set, state:)
|
17
|
+
@connection = connection
|
18
|
+
@current_set = current_set
|
19
|
+
@state = state
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<PgEventstore::Subscription>]
|
23
|
+
def subscriptions
|
24
|
+
@subscriptions ||= subscription_queries.find_all(set: @current_set, state: @state).map do |attrs|
|
25
|
+
Subscription.new(**attrs)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# @return [PgEventstore::SubscriptionQueries]
|
32
|
+
def subscription_queries
|
33
|
+
SubscriptionQueries.new(connection)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PgEventstore
|
4
|
+
module Web
|
5
|
+
module Subscriptions
|
6
|
+
module WithState
|
7
|
+
class SubscriptionsSet
|
8
|
+
# @!attribute connection
|
9
|
+
# @return [PgEventstore::Connection]
|
10
|
+
attr_reader :connection
|
11
|
+
private :connection
|
12
|
+
|
13
|
+
# @param connection [PgEventstore::Connection]
|
14
|
+
# @param current_set [String, nil]
|
15
|
+
# @param state [String]
|
16
|
+
def initialize(connection, current_set, state:)
|
17
|
+
@connection = connection
|
18
|
+
@current_set = current_set
|
19
|
+
@state = state
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<PgEventstore::SubscriptionsSet>]
|
23
|
+
def subscriptions_set
|
24
|
+
@subscriptions_set ||=
|
25
|
+
subscriptions_set_queries.find_all_by_subscription_state(name: @current_set, state: @state).map do |attrs|
|
26
|
+
PgEventstore::SubscriptionsSet.new(**attrs)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# @return [PgEventstore::SubscriptionsSetQueries]
|
33
|
+
def subscriptions_set_queries
|
34
|
+
SubscriptionsSetQueries.new(connection)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -39,9 +39,6 @@
|
|
39
39
|
<div class="ln_solid"></div>
|
40
40
|
<div class="item form-group">
|
41
41
|
<div class="col-md-6 col-sm-6 offset-md-5">
|
42
|
-
<div class="btn-group">
|
43
|
-
<button type="submit" class="btn btn-success">Search</button>
|
44
|
-
</div>
|
45
42
|
<div class="btn-group">
|
46
43
|
<div class="dropdown">
|
47
44
|
<button class="btn btn-secondary dropdown-toggle" type="button"
|
@@ -54,6 +51,9 @@
|
|
54
51
|
</div>
|
55
52
|
</div>
|
56
53
|
</div>
|
54
|
+
<div class="btn-group">
|
55
|
+
<button type="submit" class="btn btn-success">Search</button>
|
56
|
+
</div>
|
57
57
|
</div>
|
58
58
|
</div>
|
59
59
|
</form>
|
@@ -4,6 +4,18 @@
|
|
4
4
|
<div class="title_left">
|
5
5
|
<h3>Subscriptions</h3>
|
6
6
|
</div>
|
7
|
+
<div class="title_right">
|
8
|
+
<div class="col-md-5 col-sm-5 form-group pull-right top_search">
|
9
|
+
<div class="input-group">
|
10
|
+
<select class="form-control" id="subscriptions-state" autocomplete="off">
|
11
|
+
<option value="" data-url="<%= subscriptions_url %>" <% unless subscriptions_state %> selected <% end %>>All</option>
|
12
|
+
<% PgEventstore::RunnerState::STATES.values.each do |state| %>
|
13
|
+
<option value="<%= state %>" <% if state == subscriptions_state %> selected <% end %> data-url="<%= subscriptions_state_url(state: state) %>"><%= state.capitalize %></option>
|
14
|
+
<% end %>
|
15
|
+
</select>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
7
19
|
</div>
|
8
20
|
|
9
21
|
<div class="clearfix"></div>
|
@@ -11,7 +23,7 @@
|
|
11
23
|
<ul class="nav nav-tabs bg-white">
|
12
24
|
<% @set_collection.names.each do |set_name| %>
|
13
25
|
<li class="nav-item">
|
14
|
-
<a class="nav-link <%= "active bg-dark text-white" if @current_set == set_name %>" href="<%= subscriptions_url(set_name: set_name) %>">
|
26
|
+
<a class="nav-link <%= "active bg-dark text-white" if @current_set == set_name %>" href="<%= subscriptions_state ? subscriptions_state_url(state: subscriptions_state, set_name: set_name) : subscriptions_url(set_name: set_name) %>">
|
15
27
|
<%= set_name %>
|
16
28
|
</a>
|
17
29
|
</li>
|
data/lib/pg_eventstore/web.rb
CHANGED
@@ -13,6 +13,9 @@ require_relative 'web/subscriptions/set_collection'
|
|
13
13
|
require_relative 'web/subscriptions/subscriptions'
|
14
14
|
require_relative 'web/subscriptions/subscriptions_set'
|
15
15
|
require_relative 'web/subscriptions/subscriptions_to_set_association'
|
16
|
+
require_relative 'web/subscriptions/with_state/set_collection'
|
17
|
+
require_relative 'web/subscriptions/with_state/subscriptions'
|
18
|
+
require_relative 'web/subscriptions/with_state/subscriptions_set'
|
16
19
|
require_relative 'web/subscriptions/helpers'
|
17
20
|
require_relative 'web/application'
|
18
21
|
|
data/pg_eventstore.gemspec
CHANGED
@@ -12,7 +12,7 @@ module PgEventstore
|
|
12
12
|
# _@param_ `attrs`
|
13
13
|
def find_all: (::Hash[untyped, untyped] attrs) -> ::Array[::Hash[untyped, untyped]]
|
14
14
|
|
15
|
-
def set_collection: () -> ::Array[String]
|
15
|
+
def set_collection: (?String? state) -> ::Array[String]
|
16
16
|
|
17
17
|
# _@param_ `id`
|
18
18
|
def find!: (Integer id) -> ::Hash[untyped, untyped]
|
@@ -11,6 +11,8 @@ module PgEventstore
|
|
11
11
|
# The same as #find_all, but returns first result
|
12
12
|
def find_by: (::Hash[untyped, untyped] attrs) -> ::Hash[untyped, untyped]?
|
13
13
|
|
14
|
+
def find_all_by_subscription_state: (name: String?, state: String) -> ::Array[::Hash[untyped, untyped]]
|
15
|
+
|
14
16
|
# _@param_ `id`
|
15
17
|
def find!: (Integer id) -> ::Hash[untyped, untyped]
|
16
18
|
|
@@ -5,6 +5,10 @@ module PgEventstore
|
|
5
5
|
# _@param_ `set_name`
|
6
6
|
def subscriptions_url: (?set_name: String?) -> String
|
7
7
|
|
8
|
+
def subscriptions_state_url: (state: String, **untyped params) -> String
|
9
|
+
|
10
|
+
def subscriptions_state: -> String?
|
11
|
+
|
8
12
|
# _@param_ `set_id`
|
9
13
|
#
|
10
14
|
# _@param_ `id`
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module PgEventstore
|
2
|
+
module Web
|
3
|
+
module Subscriptions
|
4
|
+
module WithState
|
5
|
+
class SetCollection
|
6
|
+
@state: String
|
7
|
+
|
8
|
+
attr_reader connection: PgEventstore::Connection
|
9
|
+
|
10
|
+
def initialize: (PgEventstore::Connection connection, state: String) -> void
|
11
|
+
|
12
|
+
def names: -> Array[String]
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def subscription_queries: -> PgEventstore::SubscriptionQueries
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module PgEventstore
|
2
|
+
module Web
|
3
|
+
module Subscriptions
|
4
|
+
module WithState
|
5
|
+
class Subscriptions
|
6
|
+
@current_set: String?
|
7
|
+
|
8
|
+
@state: String
|
9
|
+
|
10
|
+
attr_reader connection: PgEventstore::Connection
|
11
|
+
|
12
|
+
def initialize: (PgEventstore::Connection connection, String? current_set, state: String) -> void
|
13
|
+
|
14
|
+
def subscriptions: -> Array[PgEventstore::Subscription]
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def subscription_queries: -> PgEventstore::SubscriptionQueries
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module PgEventstore
|
2
|
+
module Web
|
3
|
+
module Subscriptions
|
4
|
+
module WithState
|
5
|
+
class SubscriptionsSet
|
6
|
+
@current_set: String?
|
7
|
+
|
8
|
+
@state: String
|
9
|
+
|
10
|
+
attr_reader connection: PgEventstore::Connection
|
11
|
+
|
12
|
+
def initialize: (PgEventstore::Connection connection, String? current_set, state: String) -> untyped
|
13
|
+
|
14
|
+
def subscriptions_set: -> Array[PgEventstore::SubscriptionsSet]
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def subscriptions_set_queries: -> PgEventstore::SubscriptionsSetQueries
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
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: 1.
|
4
|
+
version: 1.3.1
|
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-
|
11
|
+
date: 2024-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: sinatra
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3'
|
48
|
+
- - "<"
|
46
49
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
50
|
+
version: '5'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3'
|
58
|
+
- - "<"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
60
|
+
version: '5'
|
55
61
|
description: EventStore implementation using PostgreSQL
|
56
62
|
email:
|
57
63
|
- ivan.dzyzenko@gmail.com
|
@@ -182,6 +188,9 @@ files:
|
|
182
188
|
- lib/pg_eventstore/web/subscriptions/subscriptions.rb
|
183
189
|
- lib/pg_eventstore/web/subscriptions/subscriptions_set.rb
|
184
190
|
- lib/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rb
|
191
|
+
- lib/pg_eventstore/web/subscriptions/with_state/set_collection.rb
|
192
|
+
- lib/pg_eventstore/web/subscriptions/with_state/subscriptions.rb
|
193
|
+
- lib/pg_eventstore/web/subscriptions/with_state/subscriptions_set.rb
|
185
194
|
- lib/pg_eventstore/web/views/home/dashboard.erb
|
186
195
|
- lib/pg_eventstore/web/views/home/partials/event_filter.erb
|
187
196
|
- lib/pg_eventstore/web/views/home/partials/events.erb
|
@@ -278,6 +287,9 @@ files:
|
|
278
287
|
- sig/pg_eventstore/web/subscriptions/subscriptions.rbs
|
279
288
|
- sig/pg_eventstore/web/subscriptions/subscriptions_set.rbs
|
280
289
|
- sig/pg_eventstore/web/subscriptions/subscriptions_to_set_association.rbs
|
290
|
+
- sig/pg_eventstore/web/subscriptions/with_state/set_collection.rbs
|
291
|
+
- sig/pg_eventstore/web/subscriptions/with_state/subscriptions.rbs
|
292
|
+
- sig/pg_eventstore/web/subscriptions/with_state/subscriptions_set.rbs
|
281
293
|
homepage: https://github.com/yousty/pg_eventstore
|
282
294
|
licenses:
|
283
295
|
- MIT
|