[
  {
    "type": "create_table",
    "description": "Create drsCategories table for POS category lookup (Plato's Closet stores only)",
    "database": "{{store}}",
    "storeTypes": [1],
    "check_query": "SHOW TABLES LIKE 'drsCategories'",
    "sql": "CREATE TABLE `drsCategories` (\n  `catCode` VARCHAR(10) NOT NULL PRIMARY KEY COMMENT 'Matches POS category code',\n  `description` VARCHAR(100) NOT NULL,\n  `isActive` TINYINT(1) UNSIGNED DEFAULT 1,\n  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  INDEX `idx_isActive` (`isActive`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Store-specific category lookup for floor plan assignment'"
  },
  {
    "type": "create_table",
    "description": "Create drsSubCategories table for POS subcategory lookup (Plato's Closet stores only)",
    "database": "{{store}}",
    "storeTypes": [1],
    "check_query": "SHOW TABLES LIKE 'drsSubCategories'",
    "sql": "CREATE TABLE `drsSubCategories` (\n  `subCatCode` VARCHAR(10) NOT NULL PRIMARY KEY COMMENT 'Matches POS subcategory code (sales.catID)',\n  `description` VARCHAR(100) NOT NULL,\n  `catCode` VARCHAR(10) NOT NULL COMMENT 'FK to drsCategories.catCode',\n  `labelShort` VARCHAR(10) NULL COMMENT 'Optional short label',\n  `labelQty` INT UNSIGNED NULL COMMENT 'Optional label quantity',\n  `isActive` TINYINT(1) UNSIGNED DEFAULT 1,\n  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  INDEX `idx_catCode` (`catCode`),\n  INDEX `idx_isActive` (`isActive`),\n  CONSTRAINT `fk_drsSubCategories_catCode` FOREIGN KEY (`catCode`) REFERENCES `drsCategories`(`catCode`) ON DELETE RESTRICT\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Store-specific subcategory lookup for floor plan assignment'"
  },
  {
    "type": "insert",
    "description": "Seed drsCategories from CSV data (Plato's Closet stores only)",
    "database": "{{store}}",
    "storeTypes": [1],
    "check_query": "SELECT COUNT(*) as cnt FROM drsCategories HAVING cnt > 0",
    "sql": "INSERT INTO `drsCategories` (`catCode`, `description`, `isActive`) VALUES\n('10', 'Accessories', 1),\n('20', 'Mens Basic', 1),\n('30', 'Mens F/W', 1),\n('40', 'Mens S/S', 1),\n('50', 'Womens Basic', 1),\n('60', 'Womens F/W', 1),\n('70', 'Womens S/S', 1),\n('AC', 'ACCESSORIES', 1),\n('MB', 'MENS BASIC', 1),\n('MF', 'MENS FALL/WINTER', 1),\n('MS', 'MENS SPRING/SUMMER', 1),\n('WB', 'WOMENS BASIC', 1),\n('WF', 'WOMENS FALL/WINTER', 1),\n('WS', 'WOMENS SPRING/SUMMER', 1)"
  },
  {
    "type": "insert",
    "description": "Seed drsSubCategories from CSV data (Plato's Closet stores only) - Part 1",
    "database": "{{store}}",
    "storeTypes": [1],
    "check_query": "SELECT COUNT(*) as cnt FROM drsSubCategories HAVING cnt > 0",
    "sql": "INSERT INTO `drsSubCategories` (`subCatCode`, `description`, `catCode`, `labelShort`, `labelQty`, `isActive`) VALUES\n('1011', 'Accessories Belts', '10', 'H', 1, 1),\n('1012', 'Accessories Books', '10', 'H', 1, 1),\n('1013', 'Accessories CD/Music', '10', 'H', 1, 1),\n('1014', 'Accessories Hats', '10', 'H', 1, 1),\n('1015', 'Accessories Jewelry', '10', 'H', 1, 1),\n('1016', 'Accessories Misc', '10', 'H', 1, 1),\n('1017', 'Accessories Purses', '10', 'H', 1, 1),\n('1020', 'Accessories Shoes Athletic', '10', 'H', 1, 1),\n('1021', 'Accessories Shoes Boots', '10', 'H', 1, 1),\n('1022', 'Accessories Shoes Casual', '10', 'H', 1, 1),\n('1023', 'Accessories Shoes Dress', '10', 'H', 1, 1),\n('1024', 'Accessories Shoes Sandals', '10', 'H', 1, 1),\n('1025', 'Accessories Video/DVD', '10', 'H', 1, 1),\n('1098', 'Accessories Open', '10', 'H', 1, 1),\n('1099', 'Accessories Unique', '10', 'H', 1, 1),\n('2011', 'Mens Athleticwear Jackets', '20', 'H', 1, 1),\n('2012', 'Mens Athleticwear Pants', '20', 'H', 1, 1),\n('2013', 'Mens Athleticwear Shorts', '20', 'H', 1, 1),\n('2014', 'Mens Athleticwear Tops', '20', 'H', 1, 1),\n('2020', 'Mens Bottoms Denim', '20', 'H', 1, 1),\n('2021', 'Mens Bottoms Khaki', '20', 'H', 1, 1),\n('2022', 'Mens Bottoms Other Bas', '20', 'H', 1, 1),\n('2030', 'Mens Outerwear Denim', '20', 'H', 1, 1),\n('2040', 'MENS TOPS T-SHIRTS', '20', 'H', 1, 1),\n('2098', 'Mens Open', '20', 'H', 1, 1),\n('2099', 'Mens Unique', '20', 'H', 1, 1),\n('3020', 'Mens Bottoms Other F/W', '30', 'H', 1, 1),\n('3030', 'Mens Outerwear Heavy', '30', 'H', 1, 1),\n('3031', 'Mens Outerwear Leather', '30', 'H', 1, 1),\n('3040', 'Mens Tops Long Sleeve', '30', 'H', 1, 1),\n('3041', 'Mens Tops Sweaters', '30', 'H', 1, 1),\n('3042', 'Mens Tops Sweatshirts', '30', 'H', 1, 1),\n('3043', 'Mens Tops T-Shirts L/S', '30', 'H', 1, 1),\n('4020', 'Mens Bottoms Other S/S', '40', 'H', 1, 1),\n('4021', 'Mens Bottoms Shorts', '40', 'H', 1, 1),\n('4030', 'Mens Outerwear Light', '40', 'H', 1, 1),\n('4040', 'Mens Tops Short Sleeve', '40', 'H', 1, 1),\n('4041', 'Mens Tops Tanks', '40', 'H', 1, 1),\n('4043', 'Mens Tops T-Shirts', '40', 'H', 1, 1),\n('5011', 'Womens Athleticwear Jackets', '50', 'H', 1, 1),\n('5012', 'Womens Athleticwear Pants', '50', 'H', 1, 1),\n('5013', 'Womens Athleticwear Shorts', '50', 'H', 1, 1),\n('5014', 'Womens Athleticwear Tops', '50', 'H', 1, 1),\n('5020', 'Womens Bottoms Denim', '50', 'H', 1, 1),\n('5021', 'Womens Bottoms Khaki', '50', 'H', 1, 1),\n('5022', 'Womens Bottoms Other Bas', '50', 'H', 1, 1),\n('5023', 'Womens Bottoms Overalls', '50', 'H', 1, 1),\n('5024', 'Womens Bottoms Skirts Long Bas', '50', 'H', 1, 1),\n('5025', 'Womens Bottoms Skirts Short Bas', '50', 'H', 1, 1),\n('5030', 'Womens Outerwear Denim', '50', 'H', 1, 1),\n('5040', 'WOMENS TOPS T-SHIRTS', '50', 'H', 1, 1),\n('5050', 'Womens Dresses 2 Pc Bas', '50', 'H', 1, 1),\n('5051', 'Womens Dresses Long Bas', '50', 'H', 1, 1),\n('5052', 'Womens Dresses Short Bas', '50', 'H', 1, 1),\n('5098', 'Womens Open', '50', 'H', 1, 1),\n('5099', 'Womens Unique', '50', 'H', 1, 1),\n('6020', 'Womens Bottoms Leather', '60', 'H', 1, 1),\n('6021', 'Womens Bottoms Other F/W', '60', 'H', 1, 1),\n('6022', 'Womens Bottoms Skirts Long F/W', '60', 'H', 1, 1),\n('6023', 'Womens Bottoms Skirts Short F/W', '60', 'H', 1, 1),\n('6030', 'Womens Outerwear Heavy', '60', 'H', 1, 1),\n('6031', 'Womens Outerwear Leather', '60', 'H', 1, 1),\n('6040', 'Womens Tops Long Sleeve', '60', 'H', 1, 1),\n('6041', 'Womens Tops Sweaters', '60', 'H', 1, 1),\n('6042', 'Womens Tops Sweatshirts', '60', 'H', 1, 1),\n('6043', 'Womens Tops T-Shirts L/S', '60', 'H', 1, 1),\n('6050', 'Womens Dresses 2 Pc F/W', '60', 'H', 1, 1),\n('6051', 'Womens Dresses Long F/W', '60', 'H', 1, 1),\n('6052', 'Womens Dresses Short F/W', '60', 'H', 1, 1),\n('7020', 'Womens Bottoms Capris', '70', 'H', 1, 1),\n('7021', 'Womens Bottoms Other S/S', '70', 'H', 1, 1),\n('7022', 'Womens Bottoms Shortalls', '70', 'H', 1, 1),\n('7023', 'Womens Bottoms Shorts', '70', 'H', 1, 1),\n('7024', 'Womens Bottoms Skirts Long S/S', '70', 'H', 1, 1),\n('7025', 'Womens Bottoms Skirts Short S/S', '70', 'H', 1, 1),\n('7030', 'Womens Outerwear Light', '70', 'H', 1, 1),\n('7040', 'Womens Tops Short Sleeve', '70', 'H', 1, 1),\n('7041', 'Womens Tops Tanks', '70', 'H', 1, 1),\n('7043', 'Womens Tops T-Shirts', '70', 'H', 1, 1),\n('7050', 'Womens Dresses 2 Pc S/S', '70', 'H', 1, 1),\n('7051', 'Womens Dresses Long S/S', '70', 'H', 1, 1),\n('7052', 'Womens Dresses Short S/S', '70', 'H', 1, 1),\n('ACCD', 'ACCESSORIES CD/MUSIC', 'AC', 'S', 1, 1),\n('ACJE', 'ACCESSORIES JEWELRY', 'AC', 'S', 1, 1),\n('ACMI', 'ACCESSORIES MISC', 'AC', 'S', 1, 1),\n('ACSH', 'ACCESSORIES SHOES', 'AC', 'S', 1, 1),\n('MBBO', 'MENS BASIC BOTTOMS', 'MB', 'H', 1, 1),\n('MBMI', 'MENS BASIC MISC', 'MB', 'H', 1, 1),\n('MBOU', 'MENS BASIC OUTERWEAR', 'MB', 'H', 1, 1),\n('MBTO', 'MENS BASIC TOP', 'MB', 'H', 1, 1),\n('MFBO', 'MENS F/W BOTTOM', 'MF', 'H', 1, 1),\n('MFMI', 'MENS F/W MISC', 'MF', 'H', 1, 1),\n('MFOU', 'MENS F/W OUTERWEAR', 'MF', 'H', 1, 1),\n('MFTO', 'MENS F/W TOP', 'MF', 'H', 1, 1),\n('MSBO', 'MENS S/S BOTTOM', 'MS', 'H', 1, 1),\n('MSMI', 'MENS S/S MISC', 'MS', 'H', 1, 1),\n('MSOU', 'MENS S/S OUTERWEAR', 'MS', 'H', 1, 1),\n('MSTO', 'MENS S/S TOP', 'MS', 'H', 1, 1),\n('WBBO', 'WOMENS BASIC BOTTOM', 'WB', 'H', 1, 1),\n('WBDR', 'WOMENS BASIC DRESS/2PC', 'WB', 'H', 1, 1),\n('WBMI', 'WOMENS BASIC MISC', 'WB', 'H', 1, 1),\n('WBOU', 'WOMENS BASIC OUTERWEAR', 'WB', 'H', 1, 1),\n('WBTO', 'WOMENS BASIC TOP', 'WB', 'H', 1, 1),\n('WFBO', 'WOMENS F/W BOTTOM', 'WF', 'H', 1, 1),\n('WFDR', 'WOMENS F/W DRESS/2PC', 'WF', 'H', 1, 1),\n('WFMI', 'WOMENS F/W MISC', 'WF', 'H', 1, 1),\n('WFOU', 'WOMENS F/W OUTERWEAR', 'WF', 'H', 1, 1),\n('WFTO', 'WOMENS F/W TOP', 'WF', 'H', 1, 1),\n('WSBO', 'WOMENS S/S BOTTOM', 'WS', 'H', 1, 1),\n('WSDR', 'WOMENS S/S DRESS/2PC', 'WS', 'H', 1, 1),\n('WSMI', 'WOMENS S/S MISC', 'WS', 'H', 1, 1),\n('WSOU', 'WOMENS S/S OUTERWEAR', 'WS', 'H', 1, 1),\n('WSTO', 'WOMENS S/S TOP', 'WS', 'H', 1, 1)"
  },
  {
    "type": "raw_sql",
    "description": "Seed bsCategories with floor plan categories (insert missing only, Plato's Closet stores only)",
    "database": "{{store}}",
    "storeTypes": [1],
    "check_query": "SELECT 1 FROM bsCategories WHERE name = 'Accessories' LIMIT 1",
    "sql": "INSERT INTO `bsCategories` (`name`) SELECT cat.description FROM `drsCategories` cat WHERE NOT EXISTS (SELECT 1 FROM `bsCategories` bs WHERE bs.name COLLATE utf8mb4_unicode_ci = cat.description COLLATE utf8mb4_unicode_ci)"
  }
]
