34 lines
826 B
Ruby
34 lines
826 B
Ruby
# frozen_string_literal: true
|
|
|
|
class RemoveDuplicateDastSiteTokens < ActiveRecord::Migration[6.1]
|
|
disable_ddl_transaction!
|
|
|
|
class DastSiteToken < ApplicationRecord
|
|
self.table_name = 'dast_site_tokens'
|
|
self.inheritance_column = :_type_disabled
|
|
|
|
scope :duplicates, -> do
|
|
all_duplicates = select(:project_id, :url)
|
|
.distinct
|
|
.group(:project_id, :url)
|
|
.having('count(*) > 1')
|
|
.pluck('array_agg(id) as ids')
|
|
|
|
duplicate_ids = extract_duplicate_ids(all_duplicates)
|
|
|
|
where(id: duplicate_ids)
|
|
end
|
|
|
|
def self.extract_duplicate_ids(duplicates)
|
|
duplicates.flat_map { |ids| ids.first(ids.size - 1) }
|
|
end
|
|
end
|
|
|
|
def up
|
|
DastSiteToken.duplicates.delete_all
|
|
end
|
|
|
|
def down
|
|
end
|
|
end
|