diff --git a/db/seeds/seed_all.sql b/db/seeds/seed_all.sql index 73895ee6..da5c0589 100644 --- a/db/seeds/seed_all.sql +++ b/db/seeds/seed_all.sql @@ -527,40 +527,69 @@ INSERT INTO `Category` (`name`, `parentId`) -- Obs: Vi sätter bara categoryId där den fortfarande är NULL. -- ============================================================ +SET @has_subcategory := ( + SELECT COUNT(*) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'Product' + AND COLUMN_NAME = 'subcategory' +); + -- 1) category (nivå 2) + subcategory (nivå 3) -UPDATE `Product` p -JOIN `Category` c1 ON c1.parentId IS NULL -JOIN `Category` c2 ON c2.parentId = c1.id -JOIN `Category` c3 ON c3.parentId = c2.id -SET p.`categoryId` = c3.id -WHERE p.`categoryId` IS NULL - AND p.`category` IS NOT NULL - AND p.`subcategory` IS NOT NULL - AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c2.`name`)) - AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c3.`name`)); +SET @sql := IF( + @has_subcategory > 0, + 'UPDATE `Product` p + JOIN `Category` c1 ON c1.parentId IS NULL + JOIN `Category` c2 ON c2.parentId = c1.id + JOIN `Category` c3 ON c3.parentId = c2.id + SET p.`categoryId` = c3.id + WHERE p.`categoryId` IS NULL + AND p.`category` IS NOT NULL + AND p.`subcategory` IS NOT NULL + AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c2.`name`)) + AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c3.`name`))', + 'SELECT ''Skipping subcategory remap step 1: Product.subcategory missing'' AS info' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; -- 2) category (nivå 1) + subcategory (nivå 3) -UPDATE `Product` p -JOIN `Category` c1 ON c1.parentId IS NULL -JOIN `Category` c2 ON c2.parentId = c1.id -JOIN `Category` c3 ON c3.parentId = c2.id -SET p.`categoryId` = c3.id -WHERE p.`categoryId` IS NULL - AND p.`category` IS NOT NULL - AND p.`subcategory` IS NOT NULL - AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c1.`name`)) - AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c3.`name`)); +SET @sql := IF( + @has_subcategory > 0, + 'UPDATE `Product` p + JOIN `Category` c1 ON c1.parentId IS NULL + JOIN `Category` c2 ON c2.parentId = c1.id + JOIN `Category` c3 ON c3.parentId = c2.id + SET p.`categoryId` = c3.id + WHERE p.`categoryId` IS NULL + AND p.`category` IS NOT NULL + AND p.`subcategory` IS NOT NULL + AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c1.`name`)) + AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c3.`name`))', + 'SELECT ''Skipping subcategory remap step 2: Product.subcategory missing'' AS info' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; -- 3) category (nivå 1) + subcategory (nivå 2) -UPDATE `Product` p -JOIN `Category` c1 ON c1.parentId IS NULL -JOIN `Category` c2 ON c2.parentId = c1.id -SET p.`categoryId` = c2.id -WHERE p.`categoryId` IS NULL - AND p.`category` IS NOT NULL - AND p.`subcategory` IS NOT NULL - AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c1.`name`)) - AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c2.`name`)); +SET @sql := IF( + @has_subcategory > 0, + 'UPDATE `Product` p + JOIN `Category` c1 ON c1.parentId IS NULL + JOIN `Category` c2 ON c2.parentId = c1.id + SET p.`categoryId` = c2.id + WHERE p.`categoryId` IS NULL + AND p.`category` IS NOT NULL + AND p.`subcategory` IS NOT NULL + AND LOWER(TRIM(p.`category`)) = LOWER(TRIM(c1.`name`)) + AND LOWER(TRIM(p.`subcategory`)) = LOWER(TRIM(c2.`name`))', + 'SELECT ''Skipping subcategory remap step 3: Product.subcategory missing'' AS info' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; -- 4) fallback: category (nivå 1) UPDATE `Product` p