fix(prisma): delete RecipeIngredient rows before ownerless Product cleanup

This commit is contained in:
Nils-Johan Gynther
2026-05-02 19:22:30 +02:00
parent 5842646e77
commit b272ab9faf
@@ -1,13 +1,20 @@
-- Steg 1: Ta bort alla produkter utan ägare (globala seed-produkter)
-- Detta tar automatiskt bort relaterade rader via ON DELETE CASCADE
-- för: InventoryItem, PantryItem, ReceiptAlias, ProductTag, Nutrition, UserProduct
-- Steg 1: Ta bort beroenden som inte har ON DELETE CASCADE
-- RecipeIngredient -> Product saknar cascade och måste rensas manuellt först.
DELETE ri
FROM `RecipeIngredient` ri
JOIN `Product` p ON p.`id` = ri.`productId`
WHERE p.`ownerId` IS NULL;
-- Steg 2: Ta bort alla produkter utan ägare (globala seed-produkter)
-- Relaterade rader med ON DELETE CASCADE tas bort automatiskt
-- (InventoryItem, PantryItem, ReceiptAlias, ProductTag, Nutrition, UserProduct)
DELETE FROM `Product` WHERE `ownerId` IS NULL;
-- Steg 2: Gör ownerId obligatoriskt
-- Steg 3: Gör ownerId obligatoriskt
ALTER TABLE `Product`
MODIFY COLUMN `ownerId` INT NOT NULL;
-- Steg 3: Uppdatera foreign key constraint till CASCADE (ta bort gammal, lägg till ny)
-- Steg 4: Uppdatera foreign key constraint till CASCADE (ta bort gammal, lägg till ny)
ALTER TABLE `Product`
DROP FOREIGN KEY IF EXISTS `Product_ownerId_fkey`;