31 lines
706 B
Ruby
31 lines
706 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Serverless
|
||
|
class AssociateDomainService
|
||
|
PLACEHOLDER_HOSTNAME = 'example.com'.freeze
|
||
|
|
||
|
def initialize(knative, pages_domain_id:, creator:)
|
||
|
@knative = knative
|
||
|
@pages_domain_id = pages_domain_id
|
||
|
@creator = creator
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
return if unchanged?
|
||
|
|
||
|
knative.hostname ||= PLACEHOLDER_HOSTNAME
|
||
|
|
||
|
knative.pages_domain = knative.find_available_domain(pages_domain_id)
|
||
|
knative.serverless_domain_cluster.update(creator: creator) if knative.pages_domain
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
attr_reader :knative, :pages_domain_id, :creator
|
||
|
|
||
|
def unchanged?
|
||
|
knative.pages_domain&.id == pages_domain_id
|
||
|
end
|
||
|
end
|
||
|
end
|