diff --git a/ee/app/models/vulnerabilities/read.rb b/ee/app/models/vulnerabilities/read.rb index 2cac5e118730dd59e95d9579cb13a30226af854c..b80c8bbd27f19f16dc5fcd8df388f5731a1f5ea2 100644 --- a/ee/app/models/vulnerabilities/read.rb +++ b/ee/app/models/vulnerabilities/read.rb @@ -62,6 +62,7 @@ class Read < ::SecApplicationRecord scope :by_uuid, ->(uuids) { where(uuid: uuids) } scope :by_vulnerabilities, ->(vulnerabilities) { where(vulnerability: vulnerabilities) } + scope :excluding_vulnerabilities, ->(vulnerabilities) { where.not(vulnerability: vulnerabilities) } class << self alias_method :by_vulnerability, :by_vulnerabilities diff --git a/ee/app/services/vulnerabilities/reads/upsert_service.rb b/ee/app/services/vulnerabilities/reads/upsert_service.rb index 7a36f8d5d6aff4ba255454154e5c3627b9d19b2e..65025eded01be68a5538d967574fc21d65d31546 100644 --- a/ee/app/services/vulnerabilities/reads/upsert_service.rb +++ b/ee/app/services/vulnerabilities/reads/upsert_service.rb @@ -45,7 +45,7 @@ def execute next unless attributes.any? vulnerability_read_batch = Vulnerabilities::Read.by_vulnerabilities(vulnerability_batch) - .id_not_in(new_read_ids) + .excluding_vulnerabilities(new_read_ids) vulnerability_read_batch.update_all(attributes) @@ -118,8 +118,10 @@ def perform_bulk_insert(vulnerability_reads_for_insert) ::Vulnerabilities::Read.bulk_upsert!( vulnerability_reads_for_insert, unique_by: %i[uuid], - returns: :ids - ) + returns: [:vulnerability_id] + ) do |item_attrs| + item_attrs.delete('id') # `id` is an auto-generated sequence + end end def build_vulnerability_read(vulnerability)