Class: PactBroker::Integrations::Service
- Inherits:
-
Object
- Object
- PactBroker::Integrations::Service
- Extended by:
- Repositories, Repositories::Scopes, Services
- Includes:
- Logging
- Defined in:
- lib/pact_broker/integrations/service.rb
Constant Summary
Constants included from Repositories
Repositories::REPOSITORY_FACTORIES
Constants included from Services
Class Method Summary collapse
- .delete(consumer_name, provider_name) ⇒ Object
- .delete_all ⇒ Object
- .find_all(filter_options = {}, pagination_options = {}, eager_load_associations = []) ⇒ Object
- .find_for_provider(provider) ⇒ Object
-
.handle_bulk_contract_data_published(objects_with_consumer_and_provider) ⇒ Object
Callback to invoke when a batch of contract data is published (eg. the publish contracts endpoint).
-
.handle_contract_data_published(consumer, provider) ⇒ Object
Callback to invoke when a consumer contract, verification result (or provider contract in Pactflow) is published.
Methods included from Repositories
branch_repository, branch_version_repository, get_repository, integration_repository, label_repository, matrix_repository, pact_repository, pacticipant_repository, register_default_repositories, register_repository, tag_repository, verification_repository, version_repository, webhook_repository
Methods included from Services
badge_service, branch_service, certificate_service, contract_service, deployed_version_service, environment_service, get_service, group_service, index_service, integration_service, label_service, matrix_service, metrics_service, pact_service, pacticipant_service, register_default_services, register_service, released_version_service, tag_service, verification_service, version_service, webhook_service, webhook_trigger_service
Methods included from Repositories::Scopes
scope_for, unscoped, with_no_scope
Methods included from Logging
included, #log_error, #log_with_tag, #measure_info
Class Method Details
.delete(consumer_name, provider_name) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/pact_broker/integrations/service.rb', line 36 def self.delete(consumer_name, provider_name) consumer = pacticipant_service.find_pacticipant_by_name!(consumer_name) provider = pacticipant_service.find_pacticipant_by_name!(provider_name) # this takes care of the triggered webhooks and webhook executions pact_service.delete_all_pact_publications_between(consumer_name, and: provider_name) verification_service.delete_all_verifications_between(consumer_name, and: provider_name) pact_service.delete_all_pact_versions_between(consumer_name, and: provider_name) webhook_repository.delete_by_consumer_and_provider(consumer, provider) version_repository.delete_orphan_versions(consumer, provider) integration_repository.delete(consumer.id, provider.id) pacticipant_service.delete_if_orphan(consumer) pacticipant_service.delete_if_orphan(provider) unless consumer == provider end |
.delete_all ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/pact_broker/integrations/service.rb', line 50 def self.delete_all # TODO move all these into their own repositories PactBroker::DB.each_integration_model do | model | if PactBroker::Dataset::Helpers.postgres? logger.info("Truncating ", model.table_name) model.truncate(cascade: true) else logger.info("Deleting all from ", model.table_name) # Mysql adapter needs to support cascade truncate # https://travis-ci.org/pact-foundation/pact_broker/jobs/633050220#L841 # https://travis-ci.org/pact-foundation/pact_broker/jobs/633053228#L849 model.dataset.delete end end end |
.find_all(filter_options = {}, pagination_options = {}, eager_load_associations = []) ⇒ Object
16 17 18 |
# File 'lib/pact_broker/integrations/service.rb', line 16 def self.find_all( = {}, = {}, eager_load_associations = []) integration_repository.find(, , eager_load_associations) end |
.find_for_provider(provider) ⇒ Object
66 67 68 |
# File 'lib/pact_broker/integrations/service.rb', line 66 def self.find_for_provider(provider) scope_for(PactBroker::Integrations::Integration).where(provider_id: provider.id).eager(:consumer).eager(:provider).all.sort end |
.handle_bulk_contract_data_published(objects_with_consumer_and_provider) ⇒ Object
Callback to invoke when a batch of contract data is published (eg. the publish contracts endpoint)
31 32 33 34 |
# File 'lib/pact_broker/integrations/service.rb', line 31 def self.handle_bulk_contract_data_published(objects_with_consumer_and_provider) integration_repository.create_for_pacts(objects_with_consumer_and_provider) integration_repository.set_contract_data_updated_at_for_multiple_integrations(objects_with_consumer_and_provider) end |
.handle_contract_data_published(consumer, provider) ⇒ Object
Callback to invoke when a consumer contract, verification result (or provider contract in Pactflow) is published
23 24 25 26 |
# File 'lib/pact_broker/integrations/service.rb', line 23 def self.handle_contract_data_published(consumer, provider) integration_repository.create_for_pact(consumer.id, provider.id) integration_repository.set_contract_data_updated_at(consumer, provider) end |