-- ============================================================ -- 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); -- 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 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) WHERE `name` IN ('Läsk'); -- Dryck (toppnivå) UPDATE `Product` SET `categoryId` = ( SELECT id FROM `Category` WHERE name = 'Dryck' AND parentId IS NULL LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) 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 LIMIT 1 ) WHERE `name` IN ('Marmelad');