Refactor code structure for improved readability and maintainability

This commit is contained in:
Nils-Johan Gynther
2026-04-19 22:46:10 +02:00
parent 7538117c26
commit e7a1606816
7 changed files with 772 additions and 1837 deletions
-198
View File
@@ -1,198 +0,0 @@
-- Seed: svenska matvaror
-- Körs automatiskt av MariaDB vid första start om databasen är tom.
-- INSERT IGNORE gör att befintliga rader (matchat på name+normalizedName) inte skrivs över.
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `isActive`, `createdAt`, `updatedAt`) VALUES
('Ananas', 'ananas', 1, NOW(), NOW()),
('Anka', 'anka', 1, NOW(), NOW()),
('Ankbröst', 'ankbrost', 1, NOW(), NOW()),
('Apelsin', 'apelsin', 1, NOW(), NOW()),
('Aubergine', 'aubergine', 1, NOW(), NOW()),
('Avokado', 'avokado', 1, NOW(), NOW()),
('Banan', 'banan', 1, NOW(), NOW()),
('Basilika', 'basilika', 1, NOW(), NOW()),
('Blandfärs', 'blandfars', 1, NOW(), NOW()),
('Blomkål', 'blomkal', 1, NOW(), NOW()),
('Bläckfisk', 'blackfisk', 1, NOW(), NOW()),
('Blåbär', 'blabar', 1, NOW(), NOW()),
('Broccoli', 'broccoli', 1, NOW(), NOW()),
('Bröd', 'brod', 1, NOW(), NOW()),
('Buljong', 'buljong', 1, NOW(), NOW()),
('Bönor', 'bonor', 1, NOW(), NOW()),
('Chiliflingor', 'chiliflingor', 1, NOW(), NOW()),
('Chilipulver', 'chilipulver', 1, NOW(), NOW()),
('Chips', 'chips', 1, NOW(), NOW()),
('Choklad', 'choklad', 1, NOW(), NOW()),
('Citron', 'citron', 1, NOW(), NOW()),
('Curry (mild)', 'currymild', 1, NOW(), NOW()),
('Curry (stark)', 'currystark', 1, NOW(), NOW()),
('Dill', 'dill', 1, NOW(), NOW()),
('Druvor', 'druvor', 1, NOW(), NOW()),
('Entrecote', 'entrecote', 1, NOW(), NOW()),
('Falukorv', 'falukorv', 1, NOW(), NOW()),
('Fasan', 'fasan', 1, NOW(), NOW()),
('Fil', 'fil', 1, NOW(), NOW()),
('Fisk', 'fisk', 1, NOW(), NOW()),
('Fläskfilé', 'flaskfile', 1, NOW(), NOW()),
('Fläskkarré', 'flaskkarre', 1, NOW(), NOW()),
('Fläskkotlett', 'flaskkotlett', 1, NOW(), NOW()),
('Fläskrevben', 'flaskrevben', 1, NOW(), NOW()),
('Fläsksidfläsk', 'flasksidflask', 1, NOW(), NOW()),
('Fläskytterfilé', 'flaskytterfile', 1, NOW(), NOW()),
('Fryst dill', 'frystdill', 1, NOW(), NOW()),
('Fryst persilja', 'frystpersilja', 1, NOW(), NOW()),
('Färsk basilika', 'farskbasilika', 1, NOW(), NOW()),
('Färsk chili', 'farskchili', 1, NOW(), NOW()),
('Färsk dill', 'farskdill', 1, NOW(), NOW()),
('Färsk ingefära', 'farskingefara', 1, NOW(), NOW()),
('Färsk koriander', 'farskkoriander', 1, NOW(), NOW()),
('Färsk oregano', 'farskoregano', 1, NOW(), NOW()),
('Färsk persilja', 'farskpersilja', 1, NOW(), NOW()),
('Färsk rosmarin', 'farskrosmarin', 1, NOW(), NOW()),
('Färsk timjan', 'farsktimjan', 1, NOW(), NOW()),
('Glass', 'glass', 1, NOW(), NOW()),
('Grädde', 'gradde', 1, NOW(), NOW()),
('Gräddfil', 'graddfil', 1, NOW(), NOW()),
('Grönkål', 'gronkal', 1, NOW(), NOW()),
('Gurka', 'gurka', 1, NOW(), NOW()),
('Gås', 'gas', 1, NOW(), NOW()),
('Hallon', 'hallon', 1, NOW(), NOW()),
('Havregryn', 'havregryn', 1, NOW(), NOW()),
('Ingefärspulver', 'ingefarspulver', 1, NOW(), NOW()),
('Jordgubbar', 'jordgubbar', 1, NOW(), NOW()),
('Juice', 'juice', 1, NOW(), NOW()),
('Kaffe', 'kaffe', 1, NOW(), NOW()),
('Kakor', 'kakor', 1, NOW(), NOW()),
('Kalkon', 'kalkon', 1, NOW(), NOW()),
('Kalkonfilé', 'kalkonfile', 1, NOW(), NOW()),
('Kalkonfärs', 'kalkonfars', 1, NOW(), NOW()),
('Kalvfilé', 'kalvfile', 1, NOW(), NOW()),
('Kalvkotlett', 'kalvkotlett', 1, NOW(), NOW()),
('Kanelstång', 'kanelstang', 1, NOW(), NOW()),
('Ketchup', 'ketchup', 1, NOW(), NOW()),
('Kex', 'kex', 1, NOW(), NOW()),
('Kikärter', 'kikarter', 1, NOW(), NOW()),
('Kiwi', 'kiwi', 1, NOW(), NOW()),
('Korianderfrön', 'korianderfron', 1, NOW(), NOW()),
('Korv', 'korv', 1, NOW(), NOW()),
('Kryddor', 'kryddor', 1, NOW(), NOW()),
('Kumminsfrön', 'kumminsfron', 1, NOW(), NOW()),
('Kyckling', 'kyckling', 1, NOW(), NOW()),
('Kycklingben', 'kycklingben', 1, NOW(), NOW()),
('Kycklingben (lårben)', 'kycklingbenlarben', 1, NOW(), NOW()),
('Kycklingben (vingben)', 'kycklingbenvingben', 1, NOW(), NOW()),
('Kycklingbröst', 'kycklingbrost', 1, NOW(), NOW()),
('Kycklingfilé', 'kycklingfile', 1, NOW(), NOW()),
('Kycklingfärs', 'kycklingfars', 1, NOW(), NOW()),
('Kycklinggrund', 'kycklinggrund', 1, NOW(), NOW()),
('Kycklinghals', 'kycklinghals', 1, NOW(), NOW()),
('Kycklinghel', 'kycklinghel', 1, NOW(), NOW()),
('Kycklinghjärta', 'kycklinghjarta', 1, NOW(), NOW()),
('Kycklingkarré', 'kycklingkarre', 1, NOW(), NOW()),
('Kycklingklubba', 'kycklingklubba', 1, NOW(), NOW()),
('Kycklingkropp', 'kycklingkropp', 1, NOW(), NOW()),
('Kycklinglever', 'kycklinglever', 1, NOW(), NOW()),
('Kycklinglår', 'kycklinglar', 1, NOW(), NOW()),
('Kycklingmälta', 'kycklingmalta', 1, NOW(), NOW()),
('Kycklingrevben', 'kycklingrevben', 1, NOW(), NOW()),
('Kycklingvinge', 'kycklingvinge', 1, NOW(), NOW()),
('Kålrot', 'kalrot', 1, NOW(), NOW()),
('Köttbullar', 'kottbullar', 1, NOW(), NOW()),
('Köttfärs', 'kottfars', 1, NOW(), NOW()),
('Lammbog', 'lammbog', 1, NOW(), NOW()),
('Lammfärs', 'lammfars', 1, NOW(), NOW()),
('Lammhals', 'lammhals', 1, NOW(), NOW()),
('Lammkotlett', 'lammkotlett', 1, NOW(), NOW()),
('Lammrack', 'lammrack', 1, NOW(), NOW()),
('Lammrevben', 'lammrevben', 1, NOW(), NOW()),
('Lammstek', 'lammstek', 1, NOW(), NOW()),
('Lasagne', 'lasagne', 1, NOW(), NOW()),
('Lax', 'lax', 1, NOW(), NOW()),
('Lime', 'lime', 1, NOW(), NOW()),
('Linser', 'linser', 1, NOW(), NOW()),
('Läsk', 'lask', 1, NOW(), NOW()),
('Lök', 'lok', 1, NOW(), NOW()),
('Macka', 'macka', 1, NOW(), NOW()),
('Majonnäs', 'majonnas', 1, NOW(), NOW()),
('Malen kanel', 'malenkanel', 1, NOW(), NOW()),
('Malet kummin', 'maletkummin', 1, NOW(), NOW()),
('Mango', 'mango', 1, NOW(), NOW()),
('Mjöl', 'mjol', 1, NOW(), NOW()),
('Mjölk', 'mjolk', 1, NOW(), NOW()),
('Morot', 'morot', 1, NOW(), NOW()),
('Musslor', 'musslor', 1, NOW(), NOW()),
('Must', 'must', 1, NOW(), NOW()),
('Müsli', 'musli', 1, NOW(), NOW()),
('Nötfärs', 'notfars', 1, NOW(), NOW()),
('Nötter', 'notter', 1, NOW(), NOW()),
('Nötterrin', 'notterrin', 1, NOW(), NOW()),
('Olivolja', 'olivolja', 1, NOW(), NOW()),
('Oregano', 'oregano', 1, NOW(), NOW()),
('Ost', 'ost', 1, NOW(), NOW()),
('Ostskivor', 'ostskivor', 1, NOW(), NOW()),
('Oxfile', 'oxfile', 1, NOW(), NOW()),
('Oxhjärta', 'oxhjarta', 1, NOW(), NOW()),
('Oxlever', 'oxlever', 1, NOW(), NOW()),
('Palsternacka', 'palsternacka', 1, NOW(), NOW()),
('Paprikapulver', 'paprikapulver', 1, NOW(), NOW()),
('Pasta', 'pasta', 1, NOW(), NOW()),
('Persilja', 'persilja', 1, NOW(), NOW()),
('Pizza', 'pizza', 1, NOW(), NOW()),
('Potatis', 'potatis', 1, NOW(), NOW()),
('Proteinpulver', 'proteinpulver', 1, NOW(), NOW()),
('Purjolök', 'purjolok', 1, NOW(), NOW()),
('Päron', 'paron', 1, NOW(), NOW()),
('Quorn', 'quorn', 1, NOW(), NOW()),
('Renkött', 'renkott', 1, NOW(), NOW()),
('Rimmat kött', 'rimmatkott', 1, NOW(), NOW()),
('Ris', 'ris', 1, NOW(), NOW()),
('Rosmarin', 'rosmarin', 1, NOW(), NOW()),
('Russin', 'russin', 1, NOW(), NOW()),
('Räkor', 'rakor', 1, NOW(), NOW()),
('Råbiff', 'rabiff', 1, NOW(), NOW()),
('Rödbeta', 'rodbeta', 1, NOW(), NOW()),
('Rödlök', 'rodlok', 1, NOW(), NOW()),
('Rökt paprikapulver', 'roktpaprikapulver', 1, NOW(), NOW()),
('Saft', 'saft', 1, NOW(), NOW()),
('Sallad', 'sallad', 1, NOW(), NOW()),
('Salt', 'salt', 1, NOW(), NOW()),
('Selleri', 'selleri', 1, NOW(), NOW()),
('Sill', 'sill', 1, NOW(), NOW()),
('Skinka', 'skinka', 1, NOW(), NOW()),
('Smör', 'smor', 1, NOW(), NOW()),
('Socker', 'socker', 1, NOW(), NOW()),
('Spaghetti', 'spaghetti', 1, NOW(), NOW()),
('Spenat', 'spenat', 1, NOW(), NOW()),
('Stark paprikapulver', 'starkpaprikapulver', 1, NOW(), NOW()),
('Strömming', 'stromming', 1, NOW(), NOW()),
('Svartpeppar', 'svartpeppar', 1, NOW(), NOW()),
('Söt paprikapulver', 'sotpaprikapulver', 1, NOW(), NOW()),
('Sötpotatis', 'sotpotatis', 1, NOW(), NOW()),
('Tartar', 'tartar', 1, NOW(), NOW()),
('Te', 'te', 1, NOW(), NOW()),
('Timjan', 'timjan', 1, NOW(), NOW()),
('Tofu', 'tofu', 1, NOW(), NOW()),
('Tomat', 'tomat', 1, NOW(), NOW()),
('Torkad basilika', 'torkadbasilika', 1, NOW(), NOW()),
('Torkad chili', 'torkadchili', 1, NOW(), NOW()),
('Torkad dill', 'torkaddill', 1, NOW(), NOW()),
('Torkad ingefära', 'torkadingefara', 1, NOW(), NOW()),
('Torkad koriander', 'torkadkoriander', 1, NOW(), NOW()),
('Torkad oregano', 'torkadoregano', 1, NOW(), NOW()),
('Torkad persilja', 'torkadpersilja', 1, NOW(), NOW()),
('Torkad rosmarin', 'torkadrosmarin', 1, NOW(), NOW()),
('Torkad timjan', 'torkadtimjan', 1, NOW(), NOW()),
('Torskrygg', 'torskrygg', 1, NOW(), NOW()),
('Vatten', 'vatten', 1, NOW(), NOW()),
('Vegebullar', 'vegebullar', 1, NOW(), NOW()),
('Vegobitar', 'vegobitar', 1, NOW(), NOW()),
('Vegofärs', 'vegofars', 1, NOW(), NOW()),
('Vegokorv', 'vegokorv', 1, NOW(), NOW()),
('Vildsvin', 'vildsvin', 1, NOW(), NOW()),
('Viltkött', 'viltkott', 1, NOW(), NOW()),
('Vinäger', 'vinager', 1, NOW(), NOW()),
('Vitkål', 'vitkal', 1, NOW(), NOW()),
('Vitlök', 'vitlok', 1, NOW(), NOW()),
('Vitpeppar', 'vitpeppar', 1, NOW(), NOW()),
('Ägg', 'agg', 1, NOW(), NOW()),
('Älgkött', 'algkott', 1, NOW(), NOW());
-311
View File
@@ -1,311 +0,0 @@
-- ============================================================
-- Supplement: Kategorier från produktfilen
-- 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
-- ============================================================
-- ============================================================
-- LEVEL 1 — Toppkategorier (nya)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`) VALUES
('Dryck', NULL);
-- ============================================================
-- LEVEL 2 — under Dryck
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Öl & cider', id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Läsk och Energidryck', id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Bröd & Kakor (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Knäckebröd & Skorpor', id FROM `Category` WHERE name = 'Bröd & Kakor' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Färdigmat (tillägg)
-- ============================================================
-- (Kylda såser hanteras på L3 — Såser, grytbaser... finns redan)
-- ============================================================
-- LEVEL 2 — under Fryst (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt & Bär', id FROM `Category` WHERE name = 'Fryst' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdigmat', id FROM `Category` WHERE name = 'Fryst' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Frukt & Grönt (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsaker', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färska bär', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Svamp', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Glass, godis & snacks (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Choklad', id FROM `Category` WHERE name = 'Glass, godis & snacks' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Kött, chark & fågel (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kött', id FROM `Category` WHERE name = 'Kött, chark & fågel' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fågel', id FROM `Category` WHERE name = 'Kött, chark & fågel' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Mejeri, ost & ägg (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Mellanmål & desserter', id FROM `Category` WHERE name = 'Mejeri, ost & ägg' AND parentId IS NULL;
-- ============================================================
-- LEVEL 2 — under Skafferi (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Torkad frukt', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Torra baljväxter', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Bakning', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Bröd & Kakor > Knäckebröd & Skorpor
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Knäckebröd', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Knäckebröd & Skorpor'
WHERE c1.name = 'Bröd & Kakor' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Bröd & Kakor > Kex & Kakor (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Söta kex & kakor', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kex & Kakor'
WHERE c1.name = 'Bröd & Kakor' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Färdigmat > Såser, grytbaser & övriga smaksättare (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kylda såser', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Såser, grytbaser & övriga smaksättare'
WHERE c1.name = 'Färdigmat' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Fryst > Färdigmat
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Pizza, paj & piroger', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Färdigmat'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Fryst > Grönsaker & kryddor (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsaker', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker & kryddor'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Frukt & Grönt > Grönsaker
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Bönor & Groddar', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Paprika', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Övriga grönsaker', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Tomater', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdigskuret', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Frukt & Grönt > Potatis & rotsaker (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Rotsaker', 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;
-- ============================================================
-- LEVEL 3 — under Frukt & Grönt > Frukt
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Druvor', 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;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Citrusfrukt', 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;
-- ============================================================
-- LEVEL 3 — under Glass, godis & snacks > Choklad
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Chokladkakor & rullar', 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;
-- ============================================================
-- LEVEL 3 — under Kött, chark & fågel > Kött
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdiglagat & pannfärdigt', 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;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fläsk', 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;
-- ============================================================
-- LEVEL 3 — under Kött, chark & fågel > Fågel
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fryst fågel', 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;
-- ============================================================
-- LEVEL 3 — under Mejeri, ost & ägg > Ost (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Matlagningsost', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Ost'
WHERE c1.name = 'Mejeri, ost & ägg' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Skafferi > Torra baljväxter
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fröer & kärnor', 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;
-- ============================================================
-- LEVEL 3 — under Skafferi > Bakning
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Baktillbehör', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Bakning'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Skafferi > Kryddor & smaksättare (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Övriga smaksättare', 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;
-- ============================================================
-- LEVEL 3 — under Skafferi > Pasta, ris & matgryn (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Pasta', 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;
-- ============================================================
-- LEVEL 3 — under Skafferi > Konserver & burkar (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fruktkonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsakskonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fisk-& skaldjurskonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 3 — under Skafferi > Asien (tillägg)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Nudlar', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Asien'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- ============================================================
-- LEVEL 1 — Övrigt (ny toppkategori)
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`) VALUES
('Övrigt', NULL);
-- ============================================================
-- LEVEL 2 — under Övrigt
-- ============================================================
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt och grönt', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kött och fågel', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fisk', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Mejeri', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fryst', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Skafferi', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Barn och Godis', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Dryck', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
-537
View File
@@ -1,537 +0,0 @@
-- ============================================================
-- Generisk produktseed baserad på matvaror_sverige.csv
-- Placerar varje produkt i djupaste möjliga befintliga kategori.
--
-- normalizedName = trim + lowercase + strip diacritics + strip non-alphanum + no spaces
-- Säkert att köra flera gånger tack vare INSERT IGNORE (unik på normalizedName).
--
-- 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/products_seed.sql
-- ============================================================
-- ============================================================
-- FRUKT (L2 under Frukt & Grönt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ananas', 'ananas', (SELECT id FROM `Category` WHERE name = 'Frukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Banan', 'banan', (SELECT id FROM `Category` WHERE name = 'Frukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kiwi', 'kiwi', (SELECT id FROM `Category` WHERE name = 'Frukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Mango', 'mango', (SELECT id FROM `Category` WHERE name = 'Frukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Päron', 'paron', (SELECT id FROM `Category` WHERE name = 'Frukt' LIMIT 1));
-- ============================================================
-- CITRUSFRUKT (L3 under Frukt & Grönt > Frukt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Apelsin', 'apelsin', (SELECT id FROM `Category` WHERE name = 'Citrusfrukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Citron', 'citron', (SELECT id FROM `Category` WHERE name = 'Citrusfrukt' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lime', 'lime', (SELECT id FROM `Category` WHERE name = 'Citrusfrukt' LIMIT 1));
-- ============================================================
-- DRUVOR (L3 under Frukt & Grönt > Frukt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Druvor', 'druvor', (SELECT id FROM `Category` WHERE name = 'Druvor' LIMIT 1));
-- ============================================================
-- FÄRSKA BÄR (L2 under Frukt & Grönt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Blåbär', 'blabar', (SELECT id FROM `Category` WHERE name = 'Färska bär' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Hallon', 'hallon', (SELECT id FROM `Category` WHERE name = 'Färska bär' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Jordgubbar','jordgubbar',(SELECT id FROM `Category` WHERE name = 'Färska bär' LIMIT 1));
-- ============================================================
-- PAPRIKA (L3 under Frukt & Grönt > Grönsaker)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Paprika', 'paprika', (SELECT id FROM `Category` WHERE name = 'Paprika' LIMIT 1));
-- ============================================================
-- TOMATER (L3 under Frukt & Grönt > Grönsaker)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Tomat', 'tomat', (SELECT id FROM `Category` WHERE name = 'Tomater' LIMIT 1));
-- ============================================================
-- ÖVRIGA GRÖNSAKER (L3 under Frukt & Grönt > Grönsaker)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Aubergine', 'aubergine', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Avokado', 'avokado', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Blomkål', 'blomkal', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Broccoli', 'broccoli', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Grönkål', 'gronkal', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Gurka', 'gurka', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lök', 'lok', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Purjolök', 'purjolok', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Rödlök', 'rodlok', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Sallad', 'sallad', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Selleri', 'selleri', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Spenat', 'spenat', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vitlök', 'vitlok', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vitkål', 'vitkal', (SELECT id FROM `Category` WHERE name = 'Övriga grönsaker' LIMIT 1));
-- ============================================================
-- ROTSAKER (L3 under Frukt & Grönt > Potatis & rotsaker)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kålrot', 'kalrot', (SELECT id FROM `Category` WHERE name = 'Rotsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Morot', 'morot', (SELECT id FROM `Category` WHERE name = 'Rotsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Palsternacka', 'palsternacka', (SELECT id FROM `Category` WHERE name = 'Rotsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Rödbeta', 'rodbeta', (SELECT id FROM `Category` WHERE name = 'Rotsaker' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Sötpotatis', 'sotpotatis', (SELECT id FROM `Category` WHERE name = 'Rotsaker' LIMIT 1));
-- ============================================================
-- POTATIS & ROTSAKER (L2 under Frukt & Grönt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Potatis', 'potatis', (SELECT id FROM `Category` WHERE name = 'Potatis & rotsaker' LIMIT 1));
-- ============================================================
-- FLÄSK (L3 under Kött, chark & fågel > Kött)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläskfilé', 'flaskfile', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläskkarré', 'flaskkarre', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläskkotlett', 'flaskkotlett', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläskrevben', 'flaskrevben', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläsksidfläsk', 'flasksidflask', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fläskytterfilé', 'flaskytterfile', (SELECT id FROM `Category` WHERE name = 'Fläsk' LIMIT 1));
-- ============================================================
-- FÄRDIGLAGAT & PANNFÄRDIGT (L3 under Kött, chark & fågel > Kött)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Köttbullar', 'kottbullar', (SELECT id FROM `Category` WHERE name = 'Färdiglagat & pannfärdigt' LIMIT 1));
-- ============================================================
-- KÖTT (L2 under Kött, chark & fågel)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Blandfärs', 'blandfars', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Entrecote', 'entrecote', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kalvfilé', 'kalvfile', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kalvkotlett', 'kalvkotlett', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Köttfärs', 'kottfars', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammbog', 'lammbog', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammfärs', 'lammfars', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammhals', 'lammhals', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammkotlett', 'lammkotlett', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammrack', 'lammrack', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammrevben', 'lammrevben', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lammstek', 'lammstek', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Nötfärs', 'notfars', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Oxfile', 'oxfile', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Oxhjärta', 'oxhjarta', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Oxlever', 'oxlever', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Råbiff', 'rabiff', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Renkött', 'renkott', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Rimmat kött', 'rimmatkott', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Skinka', 'skinka', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Tartar', 'tartar', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vildsvin', 'vildsvin', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Viltkött', 'viltkott', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Älgkött', 'algkott', (SELECT id FROM `Category` WHERE name = 'Kött' LIMIT 1));
-- ============================================================
-- KORV (befintlig kategori under Kött, chark & fågel)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Falukorv', 'falukorv', (SELECT id FROM `Category` WHERE name = 'Korv' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Korv', 'korv', (SELECT id FROM `Category` WHERE name = 'Korv' LIMIT 1));
-- ============================================================
-- FÅGEL (L2 under Kött, chark & fågel)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Anka', 'anka', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ankbröst', 'ankbrost', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fasan', 'fasan', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Gås', 'gas', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kalkon', 'kalkon', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kalkonfilé', 'kalkonfile', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kalkonfärs', 'kalkonfars', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kyckling', 'kyckling', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingben', 'kycklingben', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingben (lårben)', 'kycklingbenlarben', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingben (vingben)', 'kycklingbenvingben', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingbröst', 'kycklingbrost', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingfilé', 'kycklingfile', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingfärs', 'kycklingfars', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinggrund', 'kycklinggrund', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinghals', 'kycklinghals', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinghel', 'kycklinghel', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinghjärta', 'kycklinghjarta', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingkarré', 'kycklingkarre', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingklubba', 'kycklingklubba', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingkropp', 'kycklingkropp', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinglever', 'kycklinglever', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklinglår', 'kycklinglar', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingmälta', 'kycklingmalta', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingrevben', 'kycklingrevben', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kycklingvinge', 'kycklingvinge', (SELECT id FROM `Category` WHERE name = 'Fågel' LIMIT 1));
-- ============================================================
-- FISK (L2 under Övrigt — eller befintlig Fisk & skaldjur)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Bläckfisk', 'blackfisk', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fisk', 'fisk', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lax', 'lax', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Musslor', 'musslor', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Räkor', 'rakor', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Sill', 'sill', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Strömming', 'stromming', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torskrygg', 'torskrygg', (SELECT id FROM `Category` WHERE name = 'Fisk' LIMIT 1));
-- ============================================================
-- MEJERI, OST & ÄGG (L1 — ingen mer specifik L2/L3 för dessa)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ägg', 'agg', (SELECT id FROM `Category` WHERE name = 'Mejeri, ost & ägg' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fil', 'fil', (SELECT id FROM `Category` WHERE name = 'Mejeri, ost & ägg' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Grädde', 'gradde', (SELECT id FROM `Category` WHERE name = 'Mejeri, ost & ägg' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Gräddfil', 'graddfil', (SELECT id FROM `Category` WHERE name = 'Mejeri, ost & ägg' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Mjölk', 'mjolk', (SELECT id FROM `Category` WHERE name = 'Mejeri, ost & ägg' LIMIT 1));
-- ============================================================
-- OST (L2 under Mejeri, ost & ägg)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ost', 'ost', (SELECT id FROM `Category` WHERE name = 'Ost' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ostskivor', 'ostskivor', (SELECT id FROM `Category` WHERE name = 'Ost' LIMIT 1));
-- ============================================================
-- MELLANMÅL & DESSERTER (L2 under Mejeri, ost & ägg)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Glass', 'glass', (SELECT id FROM `Category` WHERE name = 'Mellanmål & desserter' LIMIT 1));
-- ============================================================
-- KRYDDOR & SMAKSÄTTARE (L2 under Skafferi) — torkade kryddor
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Chiliflingor', 'chiliflingor', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Chilipulver', 'chilipulver', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Curry (mild)', 'currymild', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Curry (stark)', 'currystark', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Dill', 'dill', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ingefärspulver', 'ingefarspulver', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kanelstång', 'kanelstang', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Korianderfrön', 'korianderfron', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kryddor', 'kryddor', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kumminsfrön', 'kumminsfron', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Malen kanel', 'malenkanel', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Malet kummin', 'maletkummin', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Oregano', 'oregano', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Paprikapulver', 'paprikapulver', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Persilja', 'persilja', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Rosmarin', 'rosmarin', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Rökt paprikapulver', 'roktpaprikapulver', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Salt', 'salt', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Stark paprikapulver', 'starkpaprikapulver',(SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Svartpeppar', 'svartpeppar', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Söt paprikapulver', 'sotpaprikapulver', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Timjan', 'timjan', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vitpeppar', 'vitpeppar', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad basilika', 'torkadbasilika', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad chili', 'torkadchili', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad dill', 'torkaddill', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad ingefära', 'torkadingefara', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad koriander', 'torkadkoriander', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad oregano', 'torkadoregano', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad persilja', 'torkadpersilja', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad rosmarin', 'torkadrosmarin', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Torkad timjan', 'torkadtimjan', (SELECT id FROM `Category` WHERE name = 'Kryddor & smaksättare' LIMIT 1));
-- ============================================================
-- ÖVRIGA SMAKSÄTTARE (L3 under Kryddor & smaksättare) — färska kryddor
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Basilika', 'basilika', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk basilika', 'farskbasilika', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk chili', 'farskchili', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk dill', 'farskdill', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk ingefära', 'farskingefara', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk koriander', 'farskkoriander',(SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk oregano', 'farskoregano', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk persilja', 'farskpersilja', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk rosmarin', 'farskrosmarin', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Färsk timjan', 'farsktimjan', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fryst dill', 'frystdill', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Fryst persilja', 'frystpersilja', (SELECT id FROM `Category` WHERE name = 'Övriga smaksättare' LIMIT 1));
-- ============================================================
-- PASTA (L3 under Skafferi > Pasta, ris & matgryn)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Lasagne', 'lasagne', (SELECT id FROM `Category` WHERE name = 'Pasta' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Pasta', 'pasta', (SELECT id FROM `Category` WHERE name = 'Pasta' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Spaghetti', 'spaghetti', (SELECT id FROM `Category` WHERE name = 'Pasta' LIMIT 1));
-- ============================================================
-- PASTA, RIS & MATGRYN (L2 under Skafferi)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ris', 'ris', (SELECT id FROM `Category` WHERE name = 'Pasta, ris & matgryn' LIMIT 1));
-- ============================================================
-- BAKNING (L2 under Skafferi)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Havregryn', 'havregryn', (SELECT id FROM `Category` WHERE name = 'Bakning' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Mjöl', 'mjol', (SELECT id FROM `Category` WHERE name = 'Bakning' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Müsli', 'musli', (SELECT id FROM `Category` WHERE name = 'Bakning' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Socker', 'socker', (SELECT id FROM `Category` WHERE name = 'Bakning' LIMIT 1));
-- ============================================================
-- TORRA BALJVÄXTER (L2 under Skafferi)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Bönor', 'bonor', (SELECT id FROM `Category` WHERE name = 'Torra baljväxter' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kikärter', 'kikarter', (SELECT id FROM `Category` WHERE name = 'Torra baljväxter' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Linser', 'linser', (SELECT id FROM `Category` WHERE name = 'Torra baljväxter' LIMIT 1));
-- ============================================================
-- FRÖER & KÄRNOR (L3 under Torra baljväxter)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Nötter', 'notter', (SELECT id FROM `Category` WHERE name = 'Fröer & kärnor' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Nötterrin', 'notterrin', (SELECT id FROM `Category` WHERE name = 'Fröer & kärnor' LIMIT 1));
-- ============================================================
-- TORKAD FRUKT (L2 under Skafferi)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Russin', 'russin', (SELECT id FROM `Category` WHERE name = 'Torkad frukt' LIMIT 1));
-- ============================================================
-- BRÖD & KAKOR (L1)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Bröd', 'brod', (SELECT id FROM `Category` WHERE name = 'Bröd & Kakor' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Macka', 'macka', (SELECT id FROM `Category` WHERE name = 'Bröd & Kakor' LIMIT 1));
-- ============================================================
-- SÖTA KEX & KAKOR (L3 under Bröd & Kakor > Kex & Kakor)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kakor', 'kakor', (SELECT id FROM `Category` WHERE name = 'Söta kex & kakor' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kex', 'kex', (SELECT id FROM `Category` WHERE name = 'Söta kex & kakor' LIMIT 1));
-- ============================================================
-- DRYCK (L1 — filtrerar på parentId IS NULL pga Dryck även finns under Övrigt)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Juice', 'juice', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Kaffe', 'kaffe', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Must', 'must', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Saft', 'saft', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Te', 'te', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vatten', 'vatten', (SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1));
-- ============================================================
-- LÄSK OCH ENERGIDRYCK (L2 under Dryck)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Läsk', 'lask', (SELECT id FROM `Category` WHERE name = 'Läsk och Energidryck' LIMIT 1));
-- ============================================================
-- GLASS, GODIS & SNACKS (L1 — inget L3 för chips)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Chips', 'chips', (SELECT id FROM `Category` WHERE name = 'Glass, godis & snacks' LIMIT 1));
-- ============================================================
-- CHOKLADKAKOR & RULLAR (L3 under Glass, godis & snacks > Choklad)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Choklad', 'choklad', (SELECT id FROM `Category` WHERE name = 'Chokladkakor & rullar' LIMIT 1));
-- ============================================================
-- PIZZA, PAJ & PIROGER (L3 under Fryst > Färdigmat)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Pizza', 'pizza', (SELECT id FROM `Category` WHERE name = 'Pizza, paj & piroger' LIMIT 1));
-- ============================================================
-- KÖTT, CHARK & FÅGEL (L1) — vego-alternativ utan mer specifik kategori
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Quorn', 'quorn', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Tofu', 'tofu', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vegebullar', 'vegebullar', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vegobitar', 'vegobitar', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vegofärs', 'vegofars', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vegokorv', 'vegokorv', (SELECT id FROM `Category` WHERE name = 'Kött, chark & fågel' LIMIT 1));
-- ============================================================
-- SKAFFERI (L1 — övrigt utan djupare kategori)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Buljong', 'buljong', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Ketchup', 'ketchup', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Majonnäs', 'majonnas', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Olivolja', 'olivolja', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Proteinpulver', 'proteinpulver', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `categoryId`)
VALUES ('Vinäger', 'vinager', (SELECT id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL LIMIT 1));
+772
View File
@@ -0,0 +1,772 @@
-- ============================================================
-- seed_all.sql — Komplett seed för kategorier + produkter
--
-- Slår ihop:
-- categories_supplement.sql (INSERT IGNORE kategorier)
-- 002-seed-products.sql (INSERT IGNORE produkter utan categoryId)
-- seed_product_categories.sql (UPDATE categoryId via exakta 3-nivå-joins)
--
-- Säkert att köra flera gånger (idempotent).
--
-- 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_all.sql
-- ============================================================
-- ============================================================
-- STEG 1: KATEGORIER
-- (från categories_supplement.sql)
-- ============================================================
-- LEVEL 1 — Toppkategorier (nya)
INSERT IGNORE INTO `Category` (`name`, `parentId`) VALUES ('Dryck', NULL);
INSERT IGNORE INTO `Category` (`name`, `parentId`) VALUES ('Övrigt', NULL);
-- LEVEL 2 — under Dryck
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Öl & cider', id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Läsk och Energidryck', id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL;
-- LEVEL 2 — under Bröd & Kakor
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Knäckebröd & Skorpor', id FROM `Category` WHERE name = 'Bröd & Kakor' AND parentId IS NULL;
-- LEVEL 2 — under Fryst
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt & Bär', id FROM `Category` WHERE name = 'Fryst' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdigmat', id FROM `Category` WHERE name = 'Fryst' AND parentId IS NULL;
-- LEVEL 2 — under Frukt & Grönt
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsaker', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färska bär', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Svamp', id FROM `Category` WHERE name = 'Frukt & Grönt' AND parentId IS NULL;
-- LEVEL 2 — under Glass, godis & snacks
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Choklad', id FROM `Category` WHERE name = 'Glass, godis & snacks' AND parentId IS NULL;
-- LEVEL 2 — under Kött, chark & fågel
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kött', id FROM `Category` WHERE name = 'Kött, chark & fågel' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fågel', id FROM `Category` WHERE name = 'Kött, chark & fågel' AND parentId IS NULL;
-- LEVEL 2 — under Mejeri, ost & ägg
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Mellanmål & desserter', id FROM `Category` WHERE name = 'Mejeri, ost & ägg' AND parentId IS NULL;
-- LEVEL 2 — under Skafferi
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Torkad frukt', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Torra baljväxter', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Bakning', id FROM `Category` WHERE name = 'Skafferi' AND parentId IS NULL;
-- LEVEL 2 — under Övrigt
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Frukt och grönt', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kött och fågel', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fisk', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Mejeri', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fryst', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Skafferi', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Barn och Godis', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Dryck', id FROM `Category` WHERE name = 'Övrigt' AND parentId IS NULL;
-- LEVEL 3 — under Bröd & Kakor > Knäckebröd & Skorpor
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Knäckebröd', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Knäckebröd & Skorpor'
WHERE c1.name = 'Bröd & Kakor' AND c1.parentId IS NULL;
-- LEVEL 3 — under Bröd & Kakor > Kex & Kakor
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Söta kex & kakor', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Kex & Kakor'
WHERE c1.name = 'Bröd & Kakor' AND c1.parentId IS NULL;
-- LEVEL 3 — under Färdigmat > Såser, grytbaser & övriga smaksättare
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Kylda såser', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Såser, grytbaser & övriga smaksättare'
WHERE c1.name = 'Färdigmat' AND c1.parentId IS NULL;
-- LEVEL 3 — under Fryst > Färdigmat
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Pizza, paj & piroger', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Färdigmat'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL;
-- LEVEL 3 — under Fryst > Grönsaker & kryddor
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsaker', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker & kryddor'
WHERE c1.name = 'Fryst' AND c1.parentId IS NULL;
-- LEVEL 3 — under Frukt & Grönt > Grönsaker
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Bönor & Groddar', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Paprika', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Övriga grönsaker', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Tomater', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdigskuret', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Grönsaker'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL;
-- LEVEL 3 — under Frukt & Grönt > Potatis & rotsaker
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Rotsaker', 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;
-- LEVEL 3 — under Frukt & Grönt > Frukt
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Druvor', 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;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Citrusfrukt', 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;
-- LEVEL 3 — under Glass, godis & snacks > Choklad
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Chokladkakor & rullar', 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;
-- LEVEL 3 — under Kött, chark & fågel > Kött
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Färdiglagat & pannfärdigt', 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;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fläsk', 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;
-- LEVEL 3 — under Kött, chark & fågel > Fågel
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fryst fågel', 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;
-- LEVEL 3 — under Mejeri, ost & ägg > Ost
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Matlagningsost', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Ost'
WHERE c1.name = 'Mejeri, ost & ägg' AND c1.parentId IS NULL;
-- LEVEL 3 — under Skafferi > Torra baljväxter
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fröer & kärnor', 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;
-- LEVEL 3 — under Skafferi > Bakning
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Baktillbehör', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Bakning'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- LEVEL 3 — under Skafferi > Kryddor & smaksättare
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Övriga smaksättare', 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;
-- LEVEL 3 — under Skafferi > Pasta, ris & matgryn
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Pasta', 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;
-- LEVEL 3 — under Skafferi > Konserver & burkar
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fruktkonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Grönsakskonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Fisk-& skaldjurskonserver', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Konserver & burkar'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- LEVEL 3 — under Skafferi > Asien
INSERT IGNORE INTO `Category` (`name`, `parentId`)
SELECT 'Nudlar', c2.id
FROM `Category` c1
JOIN `Category` c2 ON c2.parentId = c1.id AND c2.name = 'Asien'
WHERE c1.name = 'Skafferi' AND c1.parentId IS NULL;
-- ============================================================
-- STEG 2: PRODUKTER (INSERT IGNORE — hoppar över befintliga)
-- (från 002-seed-products.sql.disabled)
-- ============================================================
INSERT IGNORE INTO `Product` (`name`, `normalizedName`, `isActive`, `createdAt`, `updatedAt`) VALUES
('Ananas', 'ananas', 1, NOW(), NOW()),
('Anka', 'anka', 1, NOW(), NOW()),
('Ankbröst', 'ankbrost', 1, NOW(), NOW()),
('Apelsin', 'apelsin', 1, NOW(), NOW()),
('Aubergine', 'aubergine', 1, NOW(), NOW()),
('Avokado', 'avokado', 1, NOW(), NOW()),
('Banan', 'banan', 1, NOW(), NOW()),
('Basilika', 'basilika', 1, NOW(), NOW()),
('Blandfärs', 'blandfars', 1, NOW(), NOW()),
('Blomkål', 'blomkal', 1, NOW(), NOW()),
('Bläckfisk', 'blackfisk', 1, NOW(), NOW()),
('Blåbär', 'blabar', 1, NOW(), NOW()),
('Broccoli', 'broccoli', 1, NOW(), NOW()),
('Bröd', 'brod', 1, NOW(), NOW()),
('Buljong', 'buljong', 1, NOW(), NOW()),
('Bönor', 'bonor', 1, NOW(), NOW()),
('Chiliflingor', 'chiliflingor', 1, NOW(), NOW()),
('Chilipulver', 'chilipulver', 1, NOW(), NOW()),
('Chips', 'chips', 1, NOW(), NOW()),
('Choklad', 'choklad', 1, NOW(), NOW()),
('Citron', 'citron', 1, NOW(), NOW()),
('Curry (mild)', 'currymild', 1, NOW(), NOW()),
('Curry (stark)', 'currystark', 1, NOW(), NOW()),
('Dill', 'dill', 1, NOW(), NOW()),
('Druvor', 'druvor', 1, NOW(), NOW()),
('Entrecote', 'entrecote', 1, NOW(), NOW()),
('Falukorv', 'falukorv', 1, NOW(), NOW()),
('Fasan', 'fasan', 1, NOW(), NOW()),
('Fil', 'fil', 1, NOW(), NOW()),
('Fisk', 'fisk', 1, NOW(), NOW()),
('Fläskfilé', 'flaskfile', 1, NOW(), NOW()),
('Fläskkarré', 'flaskkarre', 1, NOW(), NOW()),
('Fläskkotlett', 'flaskkotlett', 1, NOW(), NOW()),
('Fläskrevben', 'flaskrevben', 1, NOW(), NOW()),
('Fläsksidfläsk', 'flasksidflask', 1, NOW(), NOW()),
('Fläskytterfilé', 'flaskytterfile', 1, NOW(), NOW()),
('Fryst dill', 'frystdill', 1, NOW(), NOW()),
('Fryst persilja', 'frystpersilja', 1, NOW(), NOW()),
('Färsk basilika', 'farskbasilika', 1, NOW(), NOW()),
('Färsk chili', 'farskchili', 1, NOW(), NOW()),
('Färsk dill', 'farskdill', 1, NOW(), NOW()),
('Färsk ingefära', 'farskingefara', 1, NOW(), NOW()),
('Färsk koriander', 'farskkoriander', 1, NOW(), NOW()),
('Färsk oregano', 'farskoregano', 1, NOW(), NOW()),
('Färsk persilja', 'farskpersilja', 1, NOW(), NOW()),
('Färsk rosmarin', 'farskrosmarin', 1, NOW(), NOW()),
('Färsk timjan', 'farsktimjan', 1, NOW(), NOW()),
('Glass', 'glass', 1, NOW(), NOW()),
('Grädde', 'gradde', 1, NOW(), NOW()),
('Gräddfil', 'graddfil', 1, NOW(), NOW()),
('Grönkål', 'gronkal', 1, NOW(), NOW()),
('Gurka', 'gurka', 1, NOW(), NOW()),
('Gås', 'gas', 1, NOW(), NOW()),
('Hallon', 'hallon', 1, NOW(), NOW()),
('Havregryn', 'havregryn', 1, NOW(), NOW()),
('Ingefärspulver', 'ingefarspulver', 1, NOW(), NOW()),
('Jordgubbar', 'jordgubbar', 1, NOW(), NOW()),
('Juice', 'juice', 1, NOW(), NOW()),
('Kaffe', 'kaffe', 1, NOW(), NOW()),
('Kakor', 'kakor', 1, NOW(), NOW()),
('Kalkon', 'kalkon', 1, NOW(), NOW()),
('Kalkonfilé', 'kalkonfile', 1, NOW(), NOW()),
('Kalkonfärs', 'kalkonfars', 1, NOW(), NOW()),
('Kalvfilé', 'kalvfile', 1, NOW(), NOW()),
('Kalvkotlett', 'kalvkotlett', 1, NOW(), NOW()),
('Kanelstång', 'kanelstang', 1, NOW(), NOW()),
('Ketchup', 'ketchup', 1, NOW(), NOW()),
('Kex', 'kex', 1, NOW(), NOW()),
('Kikärter', 'kikarter', 1, NOW(), NOW()),
('Kiwi', 'kiwi', 1, NOW(), NOW()),
('Korianderfrön', 'korianderfron', 1, NOW(), NOW()),
('Korv', 'korv', 1, NOW(), NOW()),
('Kryddor', 'kryddor', 1, NOW(), NOW()),
('Kumminsfrön', 'kumminsfron', 1, NOW(), NOW()),
('Kyckling', 'kyckling', 1, NOW(), NOW()),
('Kycklingben', 'kycklingben', 1, NOW(), NOW()),
('Kycklingben (lårben)', 'kycklingbenlarben', 1, NOW(), NOW()),
('Kycklingben (vingben)', 'kycklingbenvingben', 1, NOW(), NOW()),
('Kycklingbröst', 'kycklingbrost', 1, NOW(), NOW()),
('Kycklingfilé', 'kycklingfile', 1, NOW(), NOW()),
('Kycklingfärs', 'kycklingfars', 1, NOW(), NOW()),
('Kycklinggrund', 'kycklinggrund', 1, NOW(), NOW()),
('Kycklinghals', 'kycklinghals', 1, NOW(), NOW()),
('Kycklinghel', 'kycklinghel', 1, NOW(), NOW()),
('Kycklinghjärta', 'kycklinghjarta', 1, NOW(), NOW()),
('Kycklingkarré', 'kycklingkarre', 1, NOW(), NOW()),
('Kycklingklubba', 'kycklingklubba', 1, NOW(), NOW()),
('Kycklingkropp', 'kycklingkropp', 1, NOW(), NOW()),
('Kycklinglever', 'kycklinglever', 1, NOW(), NOW()),
('Kycklinglår', 'kycklinglar', 1, NOW(), NOW()),
('Kycklingmälta', 'kycklingmalta', 1, NOW(), NOW()),
('Kycklingrevben', 'kycklingrevben', 1, NOW(), NOW()),
('Kycklingvinge', 'kycklingvinge', 1, NOW(), NOW()),
('Kålrot', 'kalrot', 1, NOW(), NOW()),
('Köttbullar', 'kottbullar', 1, NOW(), NOW()),
('Köttfärs', 'kottfars', 1, NOW(), NOW()),
('Lammbog', 'lammbog', 1, NOW(), NOW()),
('Lammfärs', 'lammfars', 1, NOW(), NOW()),
('Lammhals', 'lammhals', 1, NOW(), NOW()),
('Lammkotlett', 'lammkotlett', 1, NOW(), NOW()),
('Lammrack', 'lammrack', 1, NOW(), NOW()),
('Lammrevben', 'lammrevben', 1, NOW(), NOW()),
('Lammstek', 'lammstek', 1, NOW(), NOW()),
('Lasagne', 'lasagne', 1, NOW(), NOW()),
('Lax', 'lax', 1, NOW(), NOW()),
('Lime', 'lime', 1, NOW(), NOW()),
('Linser', 'linser', 1, NOW(), NOW()),
('Läsk', 'lask', 1, NOW(), NOW()),
('Lök', 'lok', 1, NOW(), NOW()),
('Macka', 'macka', 1, NOW(), NOW()),
('Majonnäs', 'majonnas', 1, NOW(), NOW()),
('Malen kanel', 'malenkanel', 1, NOW(), NOW()),
('Malet kummin', 'maletkummin', 1, NOW(), NOW()),
('Mango', 'mango', 1, NOW(), NOW()),
('Marmelad', 'marmelad', 1, NOW(), NOW()),
('Mjöl', 'mjol', 1, NOW(), NOW()),
('Mjölk', 'mjolk', 1, NOW(), NOW()),
('Morot', 'morot', 1, NOW(), NOW()),
('Musslor', 'musslor', 1, NOW(), NOW()),
('Must', 'must', 1, NOW(), NOW()),
('Müsli', 'musli', 1, NOW(), NOW()),
('Nötfärs', 'notfars', 1, NOW(), NOW()),
('Nötter', 'notter', 1, NOW(), NOW()),
('Nötterrin', 'notterrin', 1, NOW(), NOW()),
('Olivolja', 'olivolja', 1, NOW(), NOW()),
('Oregano', 'oregano', 1, NOW(), NOW()),
('Ost', 'ost', 1, NOW(), NOW()),
('Ostskivor', 'ostskivor', 1, NOW(), NOW()),
('Oxfile', 'oxfile', 1, NOW(), NOW()),
('Oxhjärta', 'oxhjarta', 1, NOW(), NOW()),
('Oxlever', 'oxlever', 1, NOW(), NOW()),
('Palsternacka', 'palsternacka', 1, NOW(), NOW()),
('Paprika', 'paprika', 1, NOW(), NOW()),
('Paprikapulver', 'paprikapulver', 1, NOW(), NOW()),
('Pasta', 'pasta', 1, NOW(), NOW()),
('Persilja', 'persilja', 1, NOW(), NOW()),
('Pizza', 'pizza', 1, NOW(), NOW()),
('Potatis', 'potatis', 1, NOW(), NOW()),
('Proteinpulver', 'proteinpulver', 1, NOW(), NOW()),
('Purjolök', 'purjolok', 1, NOW(), NOW()),
('Päron', 'paron', 1, NOW(), NOW()),
('Quorn', 'quorn', 1, NOW(), NOW()),
('Renkött', 'renkott', 1, NOW(), NOW()),
('Rimmat kött', 'rimmatkott', 1, NOW(), NOW()),
('Ris', 'ris', 1, NOW(), NOW()),
('Rosmarin', 'rosmarin', 1, NOW(), NOW()),
('Russin', 'russin', 1, NOW(), NOW()),
('Räkor', 'rakor', 1, NOW(), NOW()),
('Råbiff', 'rabiff', 1, NOW(), NOW()),
('Rödbeta', 'rodbeta', 1, NOW(), NOW()),
('Rödlök', 'rodlok', 1, NOW(), NOW()),
('Rökt paprikapulver', 'roktpaprikapulver', 1, NOW(), NOW()),
('Saft', 'saft', 1, NOW(), NOW()),
('Sallad', 'sallad', 1, NOW(), NOW()),
('Salt', 'salt', 1, NOW(), NOW()),
('Selleri', 'selleri', 1, NOW(), NOW()),
('Sill', 'sill', 1, NOW(), NOW()),
('Skinka', 'skinka', 1, NOW(), NOW()),
('Smör', 'smor', 1, NOW(), NOW()),
('Socker', 'socker', 1, NOW(), NOW()),
('Spaghetti', 'spaghetti', 1, NOW(), NOW()),
('Spenat', 'spenat', 1, NOW(), NOW()),
('Stark paprikapulver', 'starkpaprikapulver', 1, NOW(), NOW()),
('Strömming', 'stromming', 1, NOW(), NOW()),
('Svartpeppar', 'svartpeppar', 1, NOW(), NOW()),
('Söt paprikapulver', 'sotpaprikapulver', 1, NOW(), NOW()),
('Sötpotatis', 'sotpotatis', 1, NOW(), NOW()),
('Tartar', 'tartar', 1, NOW(), NOW()),
('Te', 'te', 1, NOW(), NOW()),
('Timjan', 'timjan', 1, NOW(), NOW()),
('Tofu', 'tofu', 1, NOW(), NOW()),
('Tomat', 'tomat', 1, NOW(), NOW()),
('Torkad basilika', 'torkadbasilika', 1, NOW(), NOW()),
('Torkad chili', 'torkadchili', 1, NOW(), NOW()),
('Torkad dill', 'torkaddill', 1, NOW(), NOW()),
('Torkad ingefära', 'torkadingefara', 1, NOW(), NOW()),
('Torkad koriander', 'torkadkoriander', 1, NOW(), NOW()),
('Torkad oregano', 'torkadoregano', 1, NOW(), NOW()),
('Torkad persilja', 'torkadpersilja', 1, NOW(), NOW()),
('Torkad rosmarin', 'torkadrosmarin', 1, NOW(), NOW()),
('Torkad timjan', 'torkadtimjan', 1, NOW(), NOW()),
('Torskrygg', 'torskrygg', 1, NOW(), NOW()),
('Vatten', 'vatten', 1, NOW(), NOW()),
('Vegebullar', 'vegebullar', 1, NOW(), NOW()),
('Vegobitar', 'vegobitar', 1, NOW(), NOW()),
('Vegofärs', 'vegofars', 1, NOW(), NOW()),
('Vegokorv', 'vegokorv', 1, NOW(), NOW()),
('Vildsvin', 'vildsvin', 1, NOW(), NOW()),
('Viltkött', 'viltkott', 1, NOW(), NOW()),
('Vinäger', 'vinager', 1, NOW(), NOW()),
('Vitkål', 'vitkal', 1, NOW(), NOW()),
('Vitlök', 'vitlok', 1, NOW(), NOW()),
('Vitpeppar', 'vitpeppar', 1, NOW(), NOW()),
('Ägg', 'agg', 1, NOW(), NOW()),
('Älgkött', 'algkott', 1, NOW(), NOW());
-- ============================================================
-- STEG 3: KATEGORITILLDELNING (UPDATE — körs alltid, oavsett om produkten är ny eller gammal)
-- (från 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
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 > Paprika
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 = 'Paprika'
WHERE c1.name = 'Frukt & Grönt' AND c1.parentId IS NULL
) WHERE `name` IN ('Paprika');
-- 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', 'Avokado', '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
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)
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
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 ('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å)
UPDATE `Product` SET `categoryId` = (
SELECT id FROM `Category`
WHERE name = 'Mejeri, ost & ägg' AND parentId IS NULL
) WHERE `name` IN ('Ägg', '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
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å)
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
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', 'Kryddor', '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 > Kryddor & smaksättare (ingen djupare nivå)
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 > 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 > 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');
-392
View File
@@ -1,392 +0,0 @@
-- ============================================================
-- 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');