Drop CI Pipeline and CI Build DAST Foreign Keys

problem

dast has foreign keys that reference ci_builds and ci_pipelines. these will need to be removed and we will need to clean up orphaned records when linked ci_* records are deleted.

proposal

  • add loose foreign keys to clean up oprhaned records
  • drop foreign keys

merge requests

related issues

example

# frozen_string_literal: true

class DropCiForeignKeysForDast < Gitlab::Database::Migration[1.0]
  include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers

  disable_ddl_transaction!

  def up
    remove_foreign_key_if_exists(:dast_profiles_pipelines, :ci_pipelines, name: 'fk_a60cad829d')
    remove_foreign_key_if_exists(:dast_site_profiles_pipelines, :ci_pipelines, name: 'fk_53849b0ad5')

    remove_foreign_key_if_exists(:dast_scanner_profiles_builds, :ci_builds, name: 'fk_e4c49200f8')
    remove_foreign_key_if_exists(:dast_site_profiles_builds, :ci_builds, name: 'fk_a325505e99')
  end

  def down
    add_concurrent_foreign_key(:dast_site_profiles_builds, :ci_builds, name: 'fk_a325505e99', column: :ci_build_id, on_delete: :cascade)
    add_concurrent_foreign_key(:dast_scanner_profiles_builds, :ci_builds, name: 'fk_e4c49200f8', column: :ci_build_id, on_delete: :cascade)

    add_concurrent_foreign_key(:dast_site_profiles_pipelines, :ci_pipelines, name: 'fk_53849b0ad5', column: :ci_pipeline_id, on_delete: :cascade)
    add_concurrent_foreign_key(:dast_profiles_pipelines, :ci_pipelines, name: 'fk_a60cad829d', column: :ci_pipeline_id, on_delete: :cascade)
  end
end
Edited by Philip Cunningham