class PactBroker::Deployments::DeployedVersionService

Public Class Methods

find_by_uuid(uuid) click to toggle source

Policy applied at resource level to Version

# File lib/pact_broker/deployments/deployed_version_service.rb, line 16
def self.find_by_uuid(uuid)
  DeployedVersion.where(uuid: uuid).single_record
end
find_currently_deployed_version_for_version_and_environment_and_target(version, environment, target) click to toggle source

Policy applied at resource level to Version

# File lib/pact_broker/deployments/deployed_version_service.rb, line 44
def self.find_currently_deployed_version_for_version_and_environment_and_target(version, environment, target)
  DeployedVersion
    .currently_deployed
    .for_version_and_environment_and_target(version, environment, target)
    .single_record
end
find_currently_deployed_versions_for_environment(environment, pacticipant_name: nil, target: :unspecified) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 51
def self.find_currently_deployed_versions_for_environment(environment, pacticipant_name: nil, target: :unspecified)
  query = scope_for(DeployedVersion)
    .currently_deployed
    .for_environment(environment)
    .order_by_date_desc

  query = query.for_pacticipant_name(pacticipant_name) if pacticipant_name
  query = query.for_target(target) if target != :unspecified
  query.all
end
find_currently_deployed_versions_for_pacticipant(pacticipant) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 62
def self.find_currently_deployed_versions_for_pacticipant(pacticipant)
  scope_for(DeployedVersion)
    .currently_deployed
    .where(pacticipant_id: pacticipant.id)
    .eager(:version)
    .eager(:environment)
    .order(:created_at, :id)
    .all
end
find_deployed_versions_for_version_and_environment(version, environment) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 36
def self.find_deployed_versions_for_version_and_environment(version, environment)
  scope_for(DeployedVersion)
    .for_version_and_environment(version, environment)
    .order_by_date_desc
    .all
end
find_or_create(uuid, version, environment, target, auto_created: false) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 20
def self.find_or_create(uuid, version, environment, target, auto_created: false)
  if (deployed_version = find_currently_deployed_version_for_version_and_environment_and_target(version, environment, target))
    deployed_version
  else
    record_previous_version_undeployed(version.pacticipant, environment, target)
    DeployedVersion.create(
      uuid: uuid,
      version: version,
      pacticipant_id: version.pacticipant_id,
      environment: environment,
      target: target,
      auto_created: auto_created
    )
  end
end
maybe_create_deployed_version_for_tag(version, environment_name) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 77
def self.maybe_create_deployed_version_for_tag(version, environment_name)
  if PactBroker.configuration.create_deployed_versions_for_tags
    if (environment = environment_service.find_by_name(environment_name))
      logger.info("Creating deployed version for #{version.pacticipant.name} version #{version.number} in environment #{environment_name} (because create_deployed_versions_for_tags=true)")
      find_or_create(next_uuid, version, environment, nil, auto_created: true)
    end
  end
end
next_uuid() click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 11
def self.next_uuid
  SecureRandom.uuid
end
record_version_undeployed(deployed_version) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 72
def self.record_version_undeployed(deployed_version)
  deployed_version.currently_deployed_version_id&.delete
  deployed_version.record_undeployed
end

Private Class Methods

record_previous_version_undeployed(pacticipant, environment, target) click to toggle source
# File lib/pact_broker/deployments/deployed_version_service.rb, line 86
def self.record_previous_version_undeployed(pacticipant, environment, target)
  DeployedVersion.where(
    undeployed_at: nil,
    pacticipant_id: pacticipant.id,
    environment_id: environment.id,
    target: target
  ).record_undeployed
end