hasura_handler 0.1.9 → 0.1.10
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b01723297328faafe5a3fe05dc318f9eb6f611c735965a66286d4a90237182f
|
4
|
+
data.tar.gz: 6506cb63028380f6d40927c9c39061a13a2797485e260d1292d7cb86d8b11464
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80d74bbb492e11fdfb99b841f3eb9c90435b7fbd1c349b93deb2dfda16afb0a27ee129e084a0b74e89cdb2108f2e43e7005dc51ba797b97f43501b0c1b3c3fbf
|
7
|
+
data.tar.gz: 78278bf45d18e595445177d2f42bd79103e5131571e352d603bad61fac5fae6aea8486a43463e8b39afe6356d657d71f0bc69129ffd2faf86a88ec2c1dfdcb35
|
data/lib/hasura_handler.rb
CHANGED
@@ -16,8 +16,7 @@ module HasuraHandler
|
|
16
16
|
:event_job_queue,
|
17
17
|
:event_handler_job_queue,
|
18
18
|
:async_events,
|
19
|
-
:fanout_events
|
20
|
-
:retry_after
|
19
|
+
:fanout_events
|
21
20
|
|
22
21
|
self.auth_header = 'HTTP_X_HASURA_SERVICE_KEY'
|
23
22
|
self.authentication_enabled = false
|
@@ -28,7 +27,6 @@ module HasuraHandler
|
|
28
27
|
self.actions_enabled = true
|
29
28
|
self.event_job_queue = :hasura_event
|
30
29
|
self.event_handler_job_queue = :hasura_event
|
31
|
-
self.retry_after = 5
|
32
30
|
end
|
33
31
|
|
34
32
|
def self.setup(&block)
|
data/lib/hasura_handler/event.rb
CHANGED
@@ -2,17 +2,18 @@ module HasuraHandler
|
|
2
2
|
class Event
|
3
3
|
attr_reader :id,
|
4
4
|
:table,
|
5
|
+
:schema,
|
5
6
|
:trigger,
|
6
7
|
:event,
|
7
8
|
:op,
|
8
9
|
:created_at,
|
9
10
|
:raw_event,
|
10
|
-
:errors
|
11
|
-
:valid
|
11
|
+
:errors
|
12
12
|
|
13
13
|
def initialize(event)
|
14
14
|
@id = event['id']
|
15
15
|
@table = event['table']['name']
|
16
|
+
@schema = event['table']['schema']
|
16
17
|
@trigger = event['trigger']['name']
|
17
18
|
@event = event['event']
|
18
19
|
@op = event['event']['op']
|
@@ -49,7 +50,7 @@ module HasuraHandler
|
|
49
50
|
return
|
50
51
|
end
|
51
52
|
|
52
|
-
string_fields?(@raw_event['table'], 'table', [
|
53
|
+
string_fields?(@raw_event['table'], 'table', ['schema', 'name'])
|
53
54
|
end
|
54
55
|
|
55
56
|
def validate_trigger
|
@@ -58,7 +59,7 @@ module HasuraHandler
|
|
58
59
|
return
|
59
60
|
end
|
60
61
|
|
61
|
-
string_fields?(@raw_event['trigger'], 'trigger', [
|
62
|
+
string_fields?(@raw_event['trigger'], 'trigger', ['name'])
|
62
63
|
end
|
63
64
|
|
64
65
|
def validate_event
|
@@ -68,7 +69,7 @@ module HasuraHandler
|
|
68
69
|
end
|
69
70
|
|
70
71
|
@errors['event.session_variables'] = 'not a hash' unless @event['session_variables'].is_a?(Hash)
|
71
|
-
string_fields?(@event, 'event', [
|
72
|
+
string_fields?(@event, 'event', ['op'])
|
72
73
|
|
73
74
|
[:new, :old].each do |field|
|
74
75
|
unless @event[field].nil? || @event[field].is_a?(Hash)
|
@@ -7,10 +7,20 @@ module HasuraHandler
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def process_later
|
10
|
+
unless event_handlers.present?
|
11
|
+
log_missing_handler
|
12
|
+
return
|
13
|
+
end
|
14
|
+
|
10
15
|
HasuraHandler::EventJob.perform_later(@event.raw_event)
|
11
16
|
end
|
12
17
|
|
13
18
|
def process
|
19
|
+
unless event_handlers.present?
|
20
|
+
log_missing_handler
|
21
|
+
return
|
22
|
+
end
|
23
|
+
|
14
24
|
event_handlers.each do |handler_class|
|
15
25
|
if HasuraHandler.fanout_events
|
16
26
|
HasuraHandler::EventHandlerJob.perform_later(handler_class.to_s, @event.raw_event)
|
@@ -19,20 +29,20 @@ module HasuraHandler
|
|
19
29
|
handler.run
|
20
30
|
end
|
21
31
|
end
|
22
|
-
|
23
|
-
if event_handlers.size == 0
|
24
|
-
Rails.logger.debug('[HasuraHandler] Received event with no matching handlers.')
|
25
|
-
end
|
26
32
|
end
|
27
33
|
|
28
34
|
private
|
29
35
|
|
36
|
+
def log_missing_handler
|
37
|
+
Rails.logger.debug('[HasuraHandler] Received event with no matching handlers.')
|
38
|
+
end
|
39
|
+
|
30
40
|
def event_handlers
|
31
41
|
HasuraHandler::EventHandler.
|
32
42
|
descendants.
|
33
43
|
map{ |klass| [klass, klass.hasura_matchers] }.
|
34
44
|
to_h.
|
35
|
-
select{ |klass,
|
45
|
+
select{ |klass,matchers| matchers.present? }.
|
36
46
|
map{ |klass,matchers| [klass, check_matchers(matchers)] }.
|
37
47
|
to_h.
|
38
48
|
select{ |klass,match| match }.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hasura_handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kaz Walker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|