diff --git a/ee/app/services/package_metadata/ingestion/compressed_package/license_ingestion_task.rb b/ee/app/services/package_metadata/ingestion/compressed_package/license_ingestion_task.rb index 1ac7ccb86a447c535a20dfd7cdd3a9dbec91482b..bc535ead1df60e28137f7a396edf3dcc930b7b6d 100644 --- a/ee/app/services/package_metadata/ingestion/compressed_package/license_ingestion_task.rb +++ b/ee/app/services/package_metadata/ingestion/compressed_package/license_ingestion_task.rb @@ -4,6 +4,8 @@ module PackageMetadata module Ingestion module CompressedPackage class LicenseIngestionTask + include ::Gitlab::Utils::StrongMemoize + def initialize(import_data, license_map) @import_data = import_data @license_map = license_map @@ -27,15 +29,16 @@ def execute attr_reader :import_data attr_accessor :license_map + def spdx_identifiers + import_data.flat_map(&:spdx_identifiers).sort.uniq + end + strong_memoize_attr :spdx_identifiers + def existing_licenses PackageMetadata::License.with_spdx_identifiers(spdx_identifiers) .to_h { |license| [license.spdx_identifier, license.id] } end - def spdx_identifiers - import_data.flat_map(&:spdx_identifiers).sort.uniq - end - def new_licenses spdx_identifiers .reject { |id| license_map[id] } diff --git a/ee/spec/services/package_metadata/compressed_package_data_object_spec.rb b/ee/spec/services/package_metadata/compressed_package_data_object_spec.rb index 08604667f8b66a63a95b534cc3437990d987ff87..9e2a38fd4046cbd6f62dc63b551d5b105e5d0c0a 100644 --- a/ee/spec/services/package_metadata/compressed_package_data_object_spec.rb +++ b/ee/spec/services/package_metadata/compressed_package_data_object_spec.rb @@ -142,7 +142,7 @@ subject(:spdx_identifiers) { obj.spdx_identifiers } it 'sorts licenses and removes duplicates' do - expect(obj.spdx_identifiers).to eq(%w[Apache-1.1 CC-PDDC unknown]) + expect(spdx_identifiers).to eq(%w[Apache-1.1 CC-PDDC unknown]) end # See https://gitlab.com/gitlab-org/gitlab/-/issues/418114