feat(seeds): add seed_product_categories.sql for product-category mapping

This commit is contained in:
Nils-Johan Gynther
2026-04-18 08:41:57 +02:00
parent 84b49bc186
commit 6cec7ca6dd
2 changed files with 396 additions and 1 deletions
+4 -1
View File
@@ -1,7 +1,10 @@
-- ============================================================ -- ============================================================
-- Supplement: Kategorier från produktfilen -- Supplement: Kategorier från produktfilen
-- Kör på servern: mysql -u root -p recipe_app < db/seeds/categories_supplement.sql
-- Använder INSERT IGNORE + subqueries — säkert att köra flera gånger. -- Använder INSERT IGNORE + subqueries — säkert att köra flera gånger.
--
-- Kör på servern:
-- DB_PASS=$(grep MARIADB_ROOT_PASSWORD .env | cut -d= -f2)
-- docker exec -i recipe-db mariadb -uroot -p"$DB_PASS" recipe_app < db/seeds/categories_supplement.sql
-- ============================================================ -- ============================================================
-- ============================================================ -- ============================================================
+392
View File
@@ -0,0 +1,392 @@
-- ============================================================
-- Seed: Koppla produkter till kategorier
-- Kör efter categories_supplement.sql
-- Använder UPDATE + subqueries — säkert att köra flera gånger.
-- Berör bara produkter vi är säkra på hamnar rätt.
--
-- Kör på servern:
-- DB_PASS=$(grep MARIADB_ROOT_PASSWORD .env | cut -d= -f2)
-- docker exec -i recipe-db mariadb -uroot -p"$DB_PASS" recipe_app < db/seeds/seed_product_categories.sql
-- ============================================================
-- ============================================================
-- Frukt & Grönt > Frukt > Druvor
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Frukt'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Druvor'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Druvor', 'Gröna druvor', 'Röda druvor');
-- ============================================================
-- Frukt & Grönt > Frukt > Citrusfrukt
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Frukt'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Citrusfrukt'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Apelsin', 'Citron', 'Lime');
-- ============================================================
-- Frukt & Grönt > Frukt (inga djupare underkategorier)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Frukt'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Ananas', 'Banan', 'Kiwi', 'Mango', 'Päron');
-- ============================================================
-- Frukt & Grönt > Färska bär
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Färska bär'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Blåbär', 'Hallon', 'Jordgubbar');
-- ============================================================
-- Frukt & Grönt > Grönsaker > Tomater
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Tomater'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Tomat');
-- ============================================================
-- Frukt & Grönt > Grönsaker > Övriga grönsaker
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Övriga grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN (
'Aubergine', 'Blomkål', 'Broccoli', 'Grönkål', 'Gurka',
'Sallad', 'Selleri', 'Spenat', 'Vitkål'
);
-- ============================================================
-- Frukt & Grönt > Potatis & rotsaker > Lök
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Potatis & rotsaker'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Lök'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Lök', 'Purjolök', 'Rödlök', 'Vitlök');
-- ============================================================
-- Frukt & Grönt > Potatis & rotsaker > Rotsaker
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Potatis & rotsaker'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Rotsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Kålrot', 'Morot', 'Palsternacka', 'Rödbeta');
-- ============================================================
-- Frukt & Grönt > Potatis & rotsaker (ingen djupare nivå)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Potatis & rotsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Potatis', 'Sötpotatis');
-- ============================================================
-- Frukt & Grönt > Kryddor & smaksättare > Smaksättare
-- (färska örter säljs i grönsaksdisken)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kryddor & smaksättare'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Smaksättare'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN (
'Färsk basilika', 'Färsk chili', 'Färsk dill', 'Färsk ingefära',
'Färsk koriander', 'Färsk oregano', 'Färsk persilja',
'Färsk rosmarin', 'Färsk timjan'
);
-- ============================================================
-- Mejeri, ost & ägg > Mjölk > Standardmjölk
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Mjölk'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Standardmjölk'
WHERE c1.name = 'Mejeri, ost & ägg' AND c1.parentId IS NULL
) WHERE `name` IN ('Standardmjölk');
-- ============================================================
-- Mejeri, ost & ägg > Mjölk (ingen djupare nivå)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Mjölk'
WHERE c1.name = 'Mejeri, ost & ägg' AND c1.parentId IS NULL
) WHERE `name` IN ('Lättmjölk', 'Mellanmjölk', 'Mjölk');
-- ============================================================
-- Mejeri, ost & ägg > Filmjölk & Yoghurt > Filmjölk
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Filmjölk & Yoghurt'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Filmjölk'
WHERE c1.name = 'Mejeri, ost & ägg' AND c1.parentId IS NULL
) WHERE `name` IN ('Fil');
-- ============================================================
-- Mejeri, ost & ägg (ingen djupare nivå — Ägg, Grädde, Smör etc.)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT id FROM `Category`
WHERE name = 'Mejeri, ost & ägg' AND parentId IS NULL
) WHERE `name` IN ('Ägg', 'Crème fraiche', 'Grädde', 'Gräddfil', 'Smör');
-- ============================================================
-- Kött, chark & fågel > Fågel
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Fågel'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN (
'Anka', 'Ankbröst', 'Fasan', 'Gås',
'Kalkon', 'Kalkonfilé', 'Kalkonfärs',
'Kyckling', 'Kycklingben', 'Kycklingben (lårben)', 'Kycklingben (vingben)',
'Kycklingbröst', 'Kycklingfilé', 'Kycklingfärs', 'Kycklinggrund',
'Kycklinghals', 'Kycklinghel', 'Kycklinghjärta', 'Kycklingkarré',
'Kycklingklubba', 'Kycklingkropp', 'Kycklinglever', 'Kycklinglår',
'Kycklingmälta', 'Kycklingrevben', 'Kycklingvinge'
);
-- ============================================================
-- Kött, chark & fågel > Kött > Fläsk
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kött'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Fläsk'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN (
'Fläskfilé', 'Fläskkarré', 'Fläskkotlett',
'Fläskrevben', 'Fläsksidfläsk', 'Fläskytterfilé'
);
-- ============================================================
-- Kött, chark & fågel > Kött > Färdiglagat & pannfärdigt
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kött'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Färdiglagat & pannfärdigt'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN ('Köttbullar');
-- ============================================================
-- Kött, chark & fågel > Kött (ingen djupare nivå)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kött'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN (
'Blandfärs', 'Entrecote',
'Kalvfilé', 'Kalvkotlett',
'Köttfärs', 'Lammbog', 'Lammfärs', 'Lammhals', 'Lammkotlett',
'Lammrack', 'Lammrevben', 'Lammstek',
'Nötfärs', 'Oxfile', 'Oxhjärta', 'Oxlever',
'Råbiff', 'Renkött', 'Rimmat kött', 'Tartar',
'Vildsvin', 'Viltkött', 'Älgkött'
);
-- ============================================================
-- Kött, chark & fågel > Korv
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Korv'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN ('Falukorv', 'Korv');
-- ============================================================
-- Kött, chark & fågel > Pålägg > Skivat pålägg
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Pålägg'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Skivat pålägg'
WHERE c1.name = 'Kött, chark & fågel' AND c1.parentId IS NULL
) WHERE `name` IN ('Skinka');
-- ============================================================
-- Glass, godis & snacks > Choklad
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Choklad'
WHERE c1.name = 'Glass, godis & snacks' AND c1.parentId IS NULL
) WHERE `name` IN ('Choklad');
-- ============================================================
-- Glass, godis & snacks > Chips, snacks & dip > Chips
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Chips, snacks & dip'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Chips'
WHERE c1.name = 'Glass, godis & snacks' AND c1.parentId IS NULL
) WHERE `name` IN ('Chips');
-- ============================================================
-- Dryck > Läsk och Energidryck
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Läsk och Energidryck'
WHERE c1.name = 'Dryck' AND c1.parentId IS NULL
) WHERE `name` IN ('Läsk');
-- ============================================================
-- Dryck (toppnivå — ingen passande underkategori)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT id FROM `Category`
WHERE name = 'Dryck' AND parentId IS NULL
) WHERE `name` IN ('Juice', 'Kaffe', 'Must', 'Saft', 'Te', 'Vatten');
-- ============================================================
-- Fryst > Färdigmat > Pizza, paj & piroger
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Färdigmat'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Pizza, paj & piroger'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL
) WHERE `name` IN ('Pizza');
-- ============================================================
-- Fryst > Grönsaker & kryddor > Grönsaker
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker & kryddor'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Grönsaker'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL
) WHERE `name` IN ('Fryst dill', 'Fryst persilja');
-- ============================================================
-- Skafferi > Pasta, ris & matgryn > Pasta
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Pasta, ris & matgryn'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Pasta'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Lasagne', 'Pasta', 'Spaghetti');
-- ============================================================
-- Skafferi > Pasta, ris & matgryn (ingen djupare nivå)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Pasta, ris & matgryn'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Havregryn', 'Müsli', 'Ris');
-- ============================================================
-- Skafferi > Kryddor & smaksättare > Kryddor
-- (torkade örter och malda kryddor)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kryddor & smaksättare'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Kryddor'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN (
'Basilika', 'Chiliflingor', 'Chilipulver', 'Dill',
'Ingefärspulver', 'Kanelstång', 'Korianderfrön', 'Kumminsfrön',
'Malen kanel', 'Malet kummin', 'Oregano',
'Paprikapulver', 'Persilja', 'Rosmarin', 'Salt',
'Stark paprikapulver', 'Svartpeppar', 'Söt paprikapulver',
'Rökt paprikapulver', 'Timjan', 'Vitpeppar',
'Torkad basilika', 'Torkad chili', 'Torkad dill',
'Torkad ingefära', 'Torkad koriander', 'Torkad oregano',
'Torkad persilja', 'Torkad rosmarin', 'Torkad timjan'
);
-- ============================================================
-- Skafferi > Kryddor & smaksättare > Sås, dressing & majonnäs
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kryddor & smaksättare'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Sås, dressing & majonnäs'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Ketchup', 'Majonnäs', 'Vinäger');
-- ============================================================
-- Skafferi > Kryddor & smaksättare > Övriga smaksättare
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kryddor & smaksättare'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Övriga smaksättare'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Olivolja');
-- ============================================================
-- Skafferi > Torra baljväxter
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Torra baljväxter'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Bönor', 'Kikärter', 'Linser');
-- ============================================================
-- Skafferi > Torkad frukt
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Torkad frukt'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Russin');
-- ============================================================
-- Skafferi > Bakning > Baktillbehör
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Bakning'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Baktillbehör'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Mjöl', 'Socker');
-- ============================================================
-- Skafferi > Kryddor & smaksättare (ingen djupare nivå)
-- (buljong används som smaksättare/matlagningsingrediens)
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c2.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kryddor & smaksättare'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Buljong');
-- ============================================================
-- Skafferi > Konserver & burkar > Fruktkonserver
-- ============================================================
UPDATE `Product` SET `categoryId` = (
SELECT c3.id FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
JOIN `Category` c3 ON c3.parentId = c2.id AND c3.name = 'Fruktkonserver'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL
) WHERE `name` IN ('Marmelad');