Class: PactBroker::Integrations::Service

Inherits:
Object
  • Object
show all
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

Services::SERVICE_FACTORIES

Class Method Summary collapse

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



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/pact_broker/integrations/service.rb', line 34

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_allObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/pact_broker/integrations/service.rb', line 48

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(filter_options = {}, pagination_options = {}, eager_load_associations = [])
  integration_repository.find(filter_options, pagination_options, eager_load_associations)
end

.find_for_provider(provider) ⇒ Object



64
65
66
# File 'lib/pact_broker/integrations/service.rb', line 64

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)

Parameters:

  • where (Array<Object>)

    each object has a consumer and a provider



30
31
32
# File 'lib/pact_broker/integrations/service.rb', line 30

def self.handle_bulk_contract_data_published(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

Parameters:



23
24
25
# File 'lib/pact_broker/integrations/service.rb', line 23

def self.handle_contract_data_published(consumer, provider)
  integration_repository.set_contract_data_updated_at(consumer, provider)
end