Class: PactBroker::Deployments::ReleasedVersionService

Inherits:
Object
  • Object
show all
Extended by:
Repositories::Scopes
Defined in:
lib/pact_broker/deployments/released_version_service.rb

Class Method Summary collapse

Methods included from Repositories::Scopes

scope_for, unscoped, with_no_scope

Class Method Details

.create_or_update(uuid_for_new_released_version, version, environment) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/pact_broker/deployments/released_version_service.rb', line 17

def self.create_or_update(uuid_for_new_released_version, version, environment)
  released_version = ReleasedVersion.new(
    uuid: uuid_for_new_released_version,
    version: version,
    pacticipant_id: version.pacticipant_id,
    environment: environment
  ).insert_ignore
  # Can't reproduce it in a test, but am getting a "Attempt to update object did not result in a single row modification"
  # error when marking an existing row as supported again IRL.
  ReleasedVersion.where(id: released_version.id).set_currently_supported
  released_version.refresh
end

.find_by_uuid(uuid) ⇒ Object



13
14
15
# File 'lib/pact_broker/deployments/released_version_service.rb', line 13

def self.find_by_uuid(uuid)
  ReleasedVersion.where(uuid: uuid).single_record
end

.find_currently_supported_versions_for_environment(environment, pacticipant_name: nil, pacticipant_version_number: nil) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/pact_broker/deployments/released_version_service.rb', line 30

def self.find_currently_supported_versions_for_environment(environment, pacticipant_name: nil, pacticipant_version_number: nil)
  query = ReleasedVersion
    .currently_supported
    .for_environment(environment)
  query = query.for_pacticipant_name(pacticipant_name) if pacticipant_name
  query = query.for_pacticipant_version_number(pacticipant_version_number) if pacticipant_version_number
  query.all
end

.find_currently_supported_versions_for_pacticipant(pacticipant) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/pact_broker/deployments/released_version_service.rb', line 49

def self.find_currently_supported_versions_for_pacticipant(pacticipant)
  scope_for(ReleasedVersion)
    .currently_supported
    .where(pacticipant_id: pacticipant.id)
    .eager(:version)
    .eager(:environment)
    .order(:created_at, :id)
    .all
end

.find_released_version_for_version_and_environment(version, environment) ⇒ Object



39
40
41
42
43
# File 'lib/pact_broker/deployments/released_version_service.rb', line 39

def self.find_released_version_for_version_and_environment(version, environment)
  ReleasedVersion
    .for_version_and_environment(version, environment)
    .single_record
end

.next_uuidObject



9
10
11
# File 'lib/pact_broker/deployments/released_version_service.rb', line 9

def self.next_uuid
  SecureRandom.uuid
end

.record_version_support_ended(released_version) ⇒ Object



45
46
47
# File 'lib/pact_broker/deployments/released_version_service.rb', line 45

def self.record_version_support_ended(released_version)
  released_version.record_support_ended
end