Class: PactBroker::Webhooks::Repository
- Inherits:
-
Object
- Object
- PactBroker::Webhooks::Repository
show all
- Includes:
- Logging, Repositories
- Defined in:
- lib/pact_broker/webhooks/repository.rb
Instance Method Summary
collapse
-
#create(uuid, webhook, consumer, provider) ⇒ Object
-
#create_execution(triggered_webhook, webhook_execution_result) ⇒ Object
-
#create_triggered_webhook(trigger_uuid, webhook, pact, verification, trigger_type) ⇒ Object
-
#delete_by_consumer_and_provider(consumer, provider) ⇒ Object
-
#delete_by_pacticipant(pacticipant) ⇒ Object
-
#delete_by_uuid(uuid) ⇒ Object
-
#delete_executions_by_pacticipant(pacticipants) ⇒ Object
-
#delete_triggered_webhooks_by_pact_publication_ids(pact_publication_ids) ⇒ Object
-
#delete_triggered_webhooks_by_pacticipant(pacticipant) ⇒ Object
-
#delete_triggered_webhooks_by_webhook_uuid(uuid) ⇒ Object
-
#fail_retrying_triggered_webhooks ⇒ Object
-
#find_all ⇒ Object
-
#find_by_consumer_and_or_provider(consumer, provider) ⇒ Object
-
#find_by_consumer_and_or_provider_and_event_name(consumer, provider, event_name) ⇒ Object
-
#find_by_consumer_and_provider(consumer, provider) ⇒ Object
-
#find_by_consumer_and_provider_and_event_name(consumer, provider, event_name) ⇒ Object
-
#find_by_consumer_and_provider_existing_at(consumer, provider, date_time) ⇒ Object
-
#find_by_uuid(uuid) ⇒ Object
-
#find_for_pact(pact) ⇒ Object
-
#find_latest_triggered_webhooks(consumer, provider) ⇒ Object
-
#find_latest_triggered_webhooks_for_pact(pact) ⇒ Object
-
#find_triggered_webhooks_for_pact(pact) ⇒ Object
-
#find_triggered_webhooks_for_verification(verification) ⇒ Object
-
#update_by_uuid(uuid, webhook) ⇒ Object
-
#update_triggered_webhook_status(triggered_webhook, status) ⇒ Object
#label_repository, #matrix_repository, #pact_repository, #pacticipant_repository, #tag_repository, #verification_repository, #version_repository, #webhook_repository
Methods included from Logging
included, #log_error
Instance Method Details
#create(uuid, webhook, consumer, provider) ⇒ Object
19
20
21
22
23
24
25
26
27
|
# File 'lib/pact_broker/webhooks/repository.rb', line 19
def create uuid, webhook, consumer, provider
db_webhook = Webhook.from_domain webhook, consumer, provider
db_webhook.uuid = uuid
db_webhook.save
(webhook.events || []).each do | webhook_event |
db_webhook.add_event(webhook_event)
end
find_by_uuid db_webhook.uuid
end
|
#create_execution(triggered_webhook, webhook_execution_result) ⇒ Object
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/pact_broker/webhooks/repository.rb', line 128
def create_execution triggered_webhook, webhook_execution_result
if TriggeredWebhook.where(id: triggered_webhook.id).any?
Execution.create(
triggered_webhook: triggered_webhook,
success: webhook_execution_result.success?,
logs: webhook_execution_result.logs)
else
logger.info("Could not save webhook execution for triggered webhook with id #{triggered_webhook.id} as it has been delete from the database")
end
end
|
#create_triggered_webhook(trigger_uuid, webhook, pact, verification, trigger_type) ⇒ Object
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/pact_broker/webhooks/repository.rb', line 109
def create_triggered_webhook trigger_uuid, webhook, pact, verification, trigger_type
db_webhook = Webhook.where(uuid: webhook.uuid).single_record
TriggeredWebhook.create(
status: TriggeredWebhook::STATUS_NOT_RUN,
pact_publication_id: pact.id,
verification: verification,
webhook: db_webhook,
webhook_uuid: db_webhook.uuid,
trigger_uuid: trigger_uuid,
trigger_type: trigger_type,
consumer: pact.consumer,
provider: pact.provider
)
end
|
#delete_by_consumer_and_provider(consumer, provider) ⇒ Object
77
78
79
|
# File 'lib/pact_broker/webhooks/repository.rb', line 77
def delete_by_consumer_and_provider consumer, provider
Webhook.where(consumer: consumer, provider: provider).destroy
end
|
#delete_by_pacticipant(pacticipant) ⇒ Object
49
50
51
52
|
# File 'lib/pact_broker/webhooks/repository.rb', line 49
def delete_by_pacticipant pacticipant
Webhook.where(consumer_id: pacticipant.id).destroy
Webhook.where(provider_id: pacticipant.id).destroy
end
|
#delete_by_uuid(uuid) ⇒ Object
45
46
47
|
# File 'lib/pact_broker/webhooks/repository.rb', line 45
def delete_by_uuid uuid
Webhook.where(uuid: uuid).destroy
end
|
#delete_executions_by_pacticipant(pacticipants) ⇒ Object
145
146
147
148
149
150
151
152
153
154
155
156
|
# File 'lib/pact_broker/webhooks/repository.rb', line 145
def delete_executions_by_pacticipant pacticipants
DeprecatedExecution.where(consumer: pacticipants).delete
DeprecatedExecution.where(provider: pacticipants).delete
execution_ids = Execution
.join(:triggered_webhooks, {id: :triggered_webhook_id})
.where(Sequel.or(
Sequel[:triggered_webhooks][:consumer_id] => [*pacticipants].collect(&:id),
Sequel[:triggered_webhooks][:provider_id] => [*pacticipants].collect(&:id),
)).all.collect(&:id)
Execution.where(id: execution_ids).delete
end
|
#delete_triggered_webhooks_by_pact_publication_ids(pact_publication_ids) ⇒ Object
165
166
167
168
169
170
|
# File 'lib/pact_broker/webhooks/repository.rb', line 165
def delete_triggered_webhooks_by_pact_publication_ids pact_publication_ids
triggered_webhook_ids = TriggeredWebhook.where(pact_publication_id: pact_publication_ids).select_for_subquery(:id)
Execution.where(triggered_webhook_id: triggered_webhook_ids).delete
TriggeredWebhook.where(id: triggered_webhook_ids).delete
DeprecatedExecution.where(pact_publication_id: pact_publication_ids).delete
end
|
#delete_triggered_webhooks_by_pacticipant(pacticipant) ⇒ Object
140
141
142
143
|
# File 'lib/pact_broker/webhooks/repository.rb', line 140
def delete_triggered_webhooks_by_pacticipant pacticipant
TriggeredWebhook.where(consumer: pacticipant).delete
TriggeredWebhook.where(provider: pacticipant).delete
end
|
#delete_triggered_webhooks_by_webhook_uuid(uuid) ⇒ Object
158
159
160
161
162
163
|
# File 'lib/pact_broker/webhooks/repository.rb', line 158
def delete_triggered_webhooks_by_webhook_uuid uuid
triggered_webhook_ids = TriggeredWebhook.where(webhook: Webhook.where(uuid: uuid)).select_for_subquery(:id)
Execution.where(triggered_webhook_id: triggered_webhook_ids).delete
DeprecatedExecution.where(webhook_id: Webhook.where(uuid: uuid).select_for_subquery(:id)).delete
TriggeredWebhook.where(id: triggered_webhook_ids).delete
end
|
#fail_retrying_triggered_webhooks ⇒ Object
#find_all ⇒ Object
54
55
56
|
# File 'lib/pact_broker/webhooks/repository.rb', line 54
def find_all
Webhook.all.collect(&:to_domain)
end
|
#find_by_consumer_and_or_provider(consumer, provider) ⇒ Object
62
63
64
65
66
67
|
# File 'lib/pact_broker/webhooks/repository.rb', line 62
def find_by_consumer_and_or_provider consumer, provider
find_by_consumer_and_provider(consumer, provider) +
find_by_consumer_and_provider(nil, provider) +
find_by_consumer_and_provider(consumer, nil) +
find_by_consumer_and_provider(nil, nil)
end
|
#find_by_consumer_and_or_provider_and_event_name(consumer, provider, event_name) ⇒ Object
81
82
83
84
85
86
|
# File 'lib/pact_broker/webhooks/repository.rb', line 81
def find_by_consumer_and_or_provider_and_event_name consumer, provider, event_name
find_by_consumer_and_provider_and_event_name(consumer, provider, event_name) +
find_by_consumer_and_provider_and_event_name(nil, provider, event_name) +
find_by_consumer_and_provider_and_event_name(consumer, nil, event_name) +
find_by_consumer_and_provider_and_event_name(nil, nil, event_name)
end
|
#find_by_consumer_and_provider(consumer, provider) ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/pact_broker/webhooks/repository.rb', line 69
def find_by_consumer_and_provider consumer, provider
criteria = {
consumer_id: (consumer ? consumer.id : nil),
provider_id: (provider ? provider.id : nil)
}
Webhook.where(criteria).collect(&:to_domain)
end
|
#find_by_consumer_and_provider_and_event_name(consumer, provider, event_name) ⇒ Object
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/pact_broker/webhooks/repository.rb', line 88
def find_by_consumer_and_provider_and_event_name consumer, provider, event_name
criteria = {
consumer_id: (consumer ? consumer.id : nil),
provider_id: (provider ? provider.id : nil)
}
Webhook
.select_all_qualified
.enabled
.where(criteria)
.join(:webhook_events, { webhook_id: :id })
.where(Sequel[:webhook_events][:name] => event_name)
.collect(&:to_domain)
end
|
#find_by_consumer_and_provider_existing_at(consumer, provider, date_time) ⇒ Object
103
104
105
106
107
|
# File 'lib/pact_broker/webhooks/repository.rb', line 103
def find_by_consumer_and_provider_existing_at consumer, provider, date_time
Webhook.where(consumer_id: consumer.id, provider_id: provider.id)
.where(Sequel.lit("created_at < ?", date_time))
.collect(&:to_domain)
end
|
#find_by_uuid(uuid) ⇒ Object
29
30
31
|
# File 'lib/pact_broker/webhooks/repository.rb', line 29
def find_by_uuid uuid
Webhook.where(uuid: uuid).limit(1).collect(&:to_domain)[0]
end
|
#find_for_pact(pact) ⇒ Object
58
59
60
|
# File 'lib/pact_broker/webhooks/repository.rb', line 58
def find_for_pact pact
find_by_consumer_and_or_provider(pact.consumer, pact.provider)
end
|
#find_latest_triggered_webhooks(consumer, provider) ⇒ Object
180
181
182
183
184
185
|
# File 'lib/pact_broker/webhooks/repository.rb', line 180
def find_latest_triggered_webhooks consumer, provider
LatestTriggeredWebhook
.where(consumer: consumer, provider: provider)
.order(:id)
.all
end
|
#find_latest_triggered_webhooks_for_pact(pact) ⇒ Object
172
173
174
175
176
177
178
|
# File 'lib/pact_broker/webhooks/repository.rb', line 172
def find_latest_triggered_webhooks_for_pact pact
if pact
find_latest_triggered_webhooks(pact.consumer, pact.provider)
else
[]
end
end
|
#find_triggered_webhooks_for_pact(pact) ⇒ Object
187
188
189
190
191
192
193
|
# File 'lib/pact_broker/webhooks/repository.rb', line 187
def find_triggered_webhooks_for_pact pact
PactBroker::Webhooks::TriggeredWebhook
.where(pact_publication_id: pact.pact_publication_id)
.eager(:webhook)
.eager(:webhook_executions)
.reverse(:created_at, :id)
end
|
#find_triggered_webhooks_for_verification(verification) ⇒ Object
195
196
197
198
199
200
201
|
# File 'lib/pact_broker/webhooks/repository.rb', line 195
def find_triggered_webhooks_for_verification verification
PactBroker::Webhooks::TriggeredWebhook
.where(verification_id: verification.id)
.eager(:webhook)
.eager(:webhook_executions)
.reverse(:created_at, :id)
end
|
#update_by_uuid(uuid, webhook) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/pact_broker/webhooks/repository.rb', line 33
def update_by_uuid uuid, webhook
existing_webhook = Webhook.find(uuid: uuid)
existing_webhook.consumer_id = webhook.consumer ? pacticipant_repository.find_by_name(webhook.consumer.name).id : nil
existing_webhook.provider_id = webhook.provider ? pacticipant_repository.find_by_name(webhook.provider.name).id : nil
existing_webhook.update_from_domain(webhook).save
existing_webhook.events.collect(&:delete)
(webhook.events || []).each do | webhook_event |
existing_webhook.add_event(webhook_event)
end
find_by_uuid uuid
end
|
#update_triggered_webhook_status(triggered_webhook, status) ⇒ Object
124
125
126
|
# File 'lib/pact_broker/webhooks/repository.rb', line 124
def update_triggered_webhook_status triggered_webhook, status
triggered_webhook.update(status: status)
end
|