50 lines
1,002 B
Ruby
50 lines
1,002 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Packages
|
|
module Nuget
|
|
class SyncMetadatumService
|
|
include Gitlab::Utils::StrongMemoize
|
|
|
|
def initialize(package, metadata)
|
|
@package = package
|
|
@metadata = metadata
|
|
end
|
|
|
|
def execute
|
|
if blank_metadata?
|
|
metadatum.destroy! if metadatum.persisted?
|
|
else
|
|
metadatum.update!(
|
|
license_url: license_url,
|
|
project_url: project_url,
|
|
icon_url: icon_url
|
|
)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def metadatum
|
|
strong_memoize(:metadatum) do
|
|
@package.nuget_metadatum || @package.build_nuget_metadatum
|
|
end
|
|
end
|
|
|
|
def blank_metadata?
|
|
project_url.blank? && license_url.blank? && icon_url.blank?
|
|
end
|
|
|
|
def project_url
|
|
@metadata[:project_url]
|
|
end
|
|
|
|
def license_url
|
|
@metadata[:license_url]
|
|
end
|
|
|
|
def icon_url
|
|
@metadata[:icon_url]
|
|
end
|
|
end
|
|
end
|
|
end
|