feat(seed-script): enhance category mapping with dynamic subcategory checks
This commit is contained in:
+58
-29
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user