Class: PactBroker::Webhooks::Repository
- Inherits:
-
Object
- Object
- PactBroker::Webhooks::Repository
- 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, event_name, event_context) ⇒ 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_verification_ids(verification_ids) ⇒ Object
- #delete_triggered_webhooks_by_version_id(version_id) ⇒ 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_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
Methods included from Repositories
#label_repository, #matrix_repository, #pact_repository, #pacticipant_repository, #tag_repository, #verification_repository, #version_repository, #webhook_repository
Methods included from Logging
Instance Method Details
#create(uuid, webhook, consumer, provider) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/pact_broker/webhooks/repository.rb', line 19 def create uuid, webhook, consumer, provider consumer = pacticipant_repository.find_by_name(webhook.consumer.name) if webhook.consumer provider = pacticipant_repository.find_by_name(webhook.provider.name) if webhook.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
125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/pact_broker/webhooks/repository.rb', line 125 def create_execution triggered_webhook, webhook_execution_result # TriggeredWebhook may have been deleted since the webhook execution started 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, event_name, event_context) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/pact_broker/webhooks/repository.rb', line 104 def create_triggered_webhook trigger_uuid, webhook, pact, verification, trigger_type, event_name, event_context 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, event_name: event_name, event_context: event_context ) end |
#delete_by_consumer_and_provider(consumer, provider) ⇒ Object
79 80 81 |
# File 'lib/pact_broker/webhooks/repository.rb', line 79 def delete_by_consumer_and_provider consumer, provider Webhook.where(consumer: consumer, provider: provider).destroy end |
#delete_by_pacticipant(pacticipant) ⇒ Object
51 52 53 54 |
# File 'lib/pact_broker/webhooks/repository.rb', line 51 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
47 48 49 |
# File 'lib/pact_broker/webhooks/repository.rb', line 47 def delete_by_uuid uuid Webhook.where(uuid: uuid).destroy end |
#delete_executions_by_pacticipant(pacticipants) ⇒ Object
142 143 144 145 146 147 148 149 150 |
# File 'lib/pact_broker/webhooks/repository.rb', line 142 def delete_executions_by_pacticipant pacticipants 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
166 167 168 169 |
# File 'lib/pact_broker/webhooks/repository.rb', line 166 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) delete_triggered_webhooks_and_executions(triggered_webhook_ids) end |
#delete_triggered_webhooks_by_pacticipant(pacticipant) ⇒ Object
137 138 139 140 |
# File 'lib/pact_broker/webhooks/repository.rb', line 137 def delete_triggered_webhooks_by_pacticipant pacticipant TriggeredWebhook.where(consumer: pacticipant).delete TriggeredWebhook.where(provider: pacticipant).delete end |
#delete_triggered_webhooks_by_verification_ids(verification_ids) ⇒ Object
162 163 164 |
# File 'lib/pact_broker/webhooks/repository.rb', line 162 def delete_triggered_webhooks_by_verification_ids verification_ids delete_triggered_webhooks_and_executions(TriggeredWebhook.where(verification_id: verification_ids).select_for_subquery(:id)) end |
#delete_triggered_webhooks_by_version_id(version_id) ⇒ Object
157 158 159 160 |
# File 'lib/pact_broker/webhooks/repository.rb', line 157 def delete_triggered_webhooks_by_version_id version_id delete_triggered_webhooks_by_pact_publication_ids(PactBroker::Pacts::PactPublication.where(consumer_version_id: version_id).select_for_subquery(:id)) delete_triggered_webhooks_by_verification_ids(PactBroker::Domain::Verification.where(provider_version_id: version_id).select_for_subquery(:id)) end |
#delete_triggered_webhooks_by_webhook_uuid(uuid) ⇒ Object
152 153 154 155 |
# File 'lib/pact_broker/webhooks/repository.rb', line 152 def delete_triggered_webhooks_by_webhook_uuid uuid triggered_webhook_ids = TriggeredWebhook.where(webhook: Webhook.where(uuid: uuid)).select_for_subquery(:id) delete_triggered_webhooks_and_executions(triggered_webhook_ids) end |
#fail_retrying_triggered_webhooks ⇒ Object
202 203 204 |
# File 'lib/pact_broker/webhooks/repository.rb', line 202 def TriggeredWebhook..update(status: TriggeredWebhook::STATUS_FAILURE) end |
#find_all ⇒ Object
56 57 58 |
# File 'lib/pact_broker/webhooks/repository.rb', line 56 def find_all Webhook.all.collect(&:to_domain) end |
#find_by_consumer_and_or_provider(consumer, provider) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/pact_broker/webhooks/repository.rb', line 64 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
83 84 85 86 87 88 |
# File 'lib/pact_broker/webhooks/repository.rb', line 83 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
71 72 73 74 75 76 77 |
# File 'lib/pact_broker/webhooks/repository.rb', line 71 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
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/pact_broker/webhooks/repository.rb', line 90 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_uuid(uuid) ⇒ Object
31 32 33 |
# File 'lib/pact_broker/webhooks/repository.rb', line 31 def find_by_uuid uuid Webhook.where(uuid: uuid).limit(1).collect(&:to_domain)[0] end |
#find_for_pact(pact) ⇒ Object
60 61 62 |
# File 'lib/pact_broker/webhooks/repository.rb', line 60 def find_for_pact pact find_by_consumer_and_or_provider(pact.consumer, pact.provider) end |
#find_latest_triggered_webhooks(consumer, provider) ⇒ Object
179 180 181 182 183 184 |
# File 'lib/pact_broker/webhooks/repository.rb', line 179 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
171 172 173 174 175 176 177 |
# File 'lib/pact_broker/webhooks/repository.rb', line 171 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
186 187 188 189 190 191 192 |
# File 'lib/pact_broker/webhooks/repository.rb', line 186 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
194 195 196 197 198 199 200 |
# File 'lib/pact_broker/webhooks/repository.rb', line 194 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
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/pact_broker/webhooks/repository.rb', line 35 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
121 122 123 |
# File 'lib/pact_broker/webhooks/repository.rb', line 121 def update_triggered_webhook_status triggered_webhook, status triggered_webhook.update(status: status) end |