From ba91b6c5e15adbd1112820e659966e42edf0dcf7 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 28 Jul 2026 18:13:04 +0200 Subject: [PATCH] cascade foreign keys --- ...03_add_cascade_to_software_foreign_keys.rb | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 apps/api/db/migrate/20260728000003_add_cascade_to_software_foreign_keys.rb diff --git a/apps/api/db/migrate/20260728000003_add_cascade_to_software_foreign_keys.rb b/apps/api/db/migrate/20260728000003_add_cascade_to_software_foreign_keys.rb new file mode 100644 index 0000000..d2ce292 --- /dev/null +++ b/apps/api/db/migrate/20260728000003_add_cascade_to_software_foreign_keys.rb @@ -0,0 +1,30 @@ +class AddCascadeToSoftwareForeignKeys < ActiveRecord::Migration[8.1] + def up + remove_foreign_key :external_links, name: "fk_softwares_external_links" + add_foreign_key :external_links, :softwares, name: "fk_softwares_external_links", on_delete: :cascade + + remove_foreign_key :releases, name: "fk_softwares_releases" + add_foreign_key :releases, :softwares, name: "fk_softwares_releases", on_delete: :cascade + + remove_foreign_key :software_images, :softwares + add_foreign_key :software_images, :softwares, on_delete: :cascade + + # Keep download stats when a release is removed. + remove_foreign_key :downloads, name: "fk_downloads_release" + add_foreign_key :downloads, :releases, name: "fk_downloads_release", on_delete: :nullify + end + + def down + remove_foreign_key :external_links, name: "fk_softwares_external_links" + add_foreign_key :external_links, :softwares, name: "fk_softwares_external_links" + + remove_foreign_key :releases, name: "fk_softwares_releases" + add_foreign_key :releases, :softwares, name: "fk_softwares_releases" + + remove_foreign_key :software_images, :softwares + add_foreign_key :software_images, :softwares + + remove_foreign_key :downloads, name: "fk_downloads_release" + add_foreign_key :downloads, :releases, name: "fk_downloads_release" + end +end