-- =========================================================
-- Jidda Remaining Dynamic Schema
-- MySQL/MariaDB compatible additive migration for shared hosting
-- =========================================================
-- Run this file after selecting each database in phpMyAdmin, or
-- paste each section individually into the correct database.
-- =========================================================

-- ---------------------------------------------------------
-- SECTION: jiddain_school_db
-- ---------------------------------------------------------
USE `jiddain_school_db`;

CREATE TABLE IF NOT EXISTS `school_sports` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(180) NOT NULL,
  `introduction` TEXT NULL,
  `description` TEXT NULL,
  `achievement` TEXT NULL,
  `achievement_date` VARCHAR(50) NULL,
  `image_url` VARCHAR(255) NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_school_sports_published` (`is_published`, `display_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `therapies` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(180) NOT NULL,
  `short_description` TEXT NULL,
  `description` TEXT NULL,
  `image_url` VARCHAR(255) NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_therapies_published` (`is_published`, `display_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------
-- SECTION: jiddain_kendra_db
-- ---------------------------------------------------------
USE `jiddain_kendra_db`;

CREATE TABLE IF NOT EXISTS `kendra_sports` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(180) NOT NULL,
  `description` TEXT NULL,
  `achievement` TEXT NULL,
  `achievement_date` VARCHAR(50) NULL,
  `image_url` VARCHAR(255) NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_kendra_sports_published` (`is_published`, `display_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------
-- SECTION: jiddain_news_db
-- ---------------------------------------------------------
USE `jiddain_news_db`;

CREATE TABLE IF NOT EXISTS `latest_updates` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `headline` VARCHAR(220) NOT NULL,
  `summary` TEXT NULL,
  `content` LONGTEXT NULL,
  `image_url` VARCHAR(255) NULL,
  `date` VARCHAR(50) NULL,
  `category` VARCHAR(120) NULL,
  `slug` VARCHAR(220) NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `is_featured` TINYINT(1) NOT NULL DEFAULT 0,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_latest_updates_published` (`is_published`, `display_order`, `is_featured`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `gallery_items` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(180) NULL,
  `caption` TEXT NULL,
  `category` VARCHAR(120) NULL,
  `image_url` VARCHAR(255) NOT NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_gallery_published` (`is_published`, `display_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `scrolling_announcements` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(500) NOT NULL,
  `link_url` VARCHAR(500) NULL,
  `publish_date` DATE NULL,
  `expiry_date` DATE NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_announcements_active` (`is_published`, `display_order`, `publish_date`, `expiry_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `galleries` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(180) NOT NULL,
  `description` TEXT NULL,
  `cover_image` VARCHAR(255) NULL,
  `event_date` DATE NULL,
  `is_published` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_galleries_published` (`is_published`, `display_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `gallery_images` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `gallery_id` INT UNSIGNED NOT NULL,
  `image` VARCHAR(255) NOT NULL,
  `caption` VARCHAR(500) NULL,
  `display_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_gallery_images_gallery` (`gallery_id`, `display_order`),
  CONSTRAINT `fk_gallery_images_gallery` FOREIGN KEY (`gallery_id`) REFERENCES `galleries` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `announcements` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `announcement_text` TEXT NOT NULL,
  `link_url` VARCHAR(500) DEFAULT NULL,
  `is_active` TINYINT(1) NOT NULL DEFAULT 1,
  `display_order` INT(11) NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------
-- SECTION: jiddain_product_db
-- ---------------------------------------------------------
USE `jiddain_product_db`;

CREATE TABLE IF NOT EXISTS `product_categories` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(120) NOT NULL,
  `slug` VARCHAR(120) NOT NULL,
  `description` TEXT NULL,
  `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_product_categories_slug` (`slug`),
  KEY `idx_product_categories_status` (`status`),
  KEY `idx_product_categories_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `product_categories` (`name`, `slug`, `description`, `status`, `sort_order`)
SELECT 'stationary Products', 'stationary', 'Office and school stationary essentials.', 'active', 1
WHERE NOT EXISTS (SELECT 1 FROM `product_categories` WHERE `slug` = 'stationary');

INSERT INTO `product_categories` (`name`, `slug`, `description`, `status`, `sort_order`)
SELECT 'Handmade Products', 'handmade', 'Handcrafted flowers, cards and decor items.', 'active', 2
WHERE NOT EXISTS (SELECT 1 FROM `product_categories` WHERE `slug` = 'handmade');

INSERT INTO `product_categories` (`name`, `slug`, `description`, `status`, `sort_order`)
SELECT 'Cleaning Products', 'cleaning', 'Household cleaning and hygiene essentials.', 'active', 3
WHERE NOT EXISTS (SELECT 1 FROM `product_categories` WHERE `slug` = 'cleaning');

INSERT INTO `product_categories` (`name`, `slug`, `description`, `status`, `sort_order`)
SELECT 'Seasonal Products', 'seasonal', 'Festival and seasonal decorative products.', 'active', 4
WHERE NOT EXISTS (SELECT 1 FROM `product_categories` WHERE `slug` = 'seasonal');

CREATE TABLE IF NOT EXISTS `stationary_products` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(180) NOT NULL,
  `slug` VARCHAR(180) NOT NULL,
  `code` VARCHAR(60) NULL,
  `description` TEXT NULL,
  `short_description` TEXT NULL,
  `price` DECIMAL(10,2) NULL,
  `original_price` DECIMAL(10,2) NULL,
  `discount_price` DECIMAL(10,2) NULL,
  `image` VARCHAR(255) NULL,
  `image_views` JSON NULL,
  `color_variants` JSON NULL,
  `specifications` JSON NULL,
  `offers` JSON NULL,
  `brand` VARCHAR(180) NULL,
  `average_rating` DECIMAL(2,1) NULL,
  `review_count` INT UNSIGNED NOT NULL DEFAULT 0,
  `delivery_estimate` VARCHAR(180) NULL,
  `return_policy` VARCHAR(180) NULL,
  `tax_inclusive` TINYINT(1) NULL,
  `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
  `featured` TINYINT(1) NOT NULL DEFAULT 0,
  `note` VARCHAR(255) NULL,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_stationary_products_slug` (`slug`),
  KEY `idx_stationary_products_status` (`status`),
  KEY `idx_stationary_products_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `handmade_products` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(180) NOT NULL,
  `slug` VARCHAR(180) NOT NULL,
  `code` VARCHAR(60) NULL,
  `description` TEXT NULL,
  `short_description` TEXT NULL,
  `price` DECIMAL(10,2) NULL,
  `original_price` DECIMAL(10,2) NULL,
  `discount_price` DECIMAL(10,2) NULL,
  `image` VARCHAR(255) NULL,
  `image_views` JSON NULL,
  `color_variants` JSON NULL,
  `specifications` JSON NULL,
  `offers` JSON NULL,
  `brand` VARCHAR(180) NULL,
  `average_rating` DECIMAL(2,1) NULL,
  `review_count` INT UNSIGNED NOT NULL DEFAULT 0,
  `delivery_estimate` VARCHAR(180) NULL,
  `return_policy` VARCHAR(180) NULL,
  `tax_inclusive` TINYINT(1) NULL,
  `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
  `featured` TINYINT(1) NOT NULL DEFAULT 0,
  `note` VARCHAR(255) NULL,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_handmade_products_slug` (`slug`),
  KEY `idx_handmade_products_status` (`status`),
  KEY `idx_handmade_products_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `cleaning_products` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(180) NOT NULL,
  `slug` VARCHAR(180) NOT NULL,
  `code` VARCHAR(60) NULL,
  `description` TEXT NULL,
  `short_description` TEXT NULL,
  `price` DECIMAL(10,2) NULL,
  `original_price` DECIMAL(10,2) NULL,
  `discount_price` DECIMAL(10,2) NULL,
  `image` VARCHAR(255) NULL,
  `image_views` JSON NULL,
  `color_variants` JSON NULL,
  `specifications` JSON NULL,
  `offers` JSON NULL,
  `brand` VARCHAR(180) NULL,
  `average_rating` DECIMAL(2,1) NULL,
  `review_count` INT UNSIGNED NOT NULL DEFAULT 0,
  `delivery_estimate` VARCHAR(180) NULL,
  `return_policy` VARCHAR(180) NULL,
  `tax_inclusive` TINYINT(1) NULL,
  `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
  `featured` TINYINT(1) NOT NULL DEFAULT 0,
  `note` VARCHAR(255) NULL,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_cleaning_products_slug` (`slug`),
  KEY `idx_cleaning_products_status` (`status`),
  KEY `idx_cleaning_products_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `seasonal_products` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(180) NOT NULL,
  `slug` VARCHAR(180) NOT NULL,
  `code` VARCHAR(60) NULL,
  `description` TEXT NULL,
  `short_description` TEXT NULL,
  `price` DECIMAL(10,2) NULL,
  `original_price` DECIMAL(10,2) NULL,
  `discount_price` DECIMAL(10,2) NULL,
  `image` VARCHAR(255) NULL,
  `image_views` JSON NULL,
  `color_variants` JSON NULL,
  `specifications` JSON NULL,
  `offers` JSON NULL,
  `brand` VARCHAR(180) NULL,
  `average_rating` DECIMAL(2,1) NULL,
  `review_count` INT UNSIGNED NOT NULL DEFAULT 0,
  `delivery_estimate` VARCHAR(180) NULL,
  `return_policy` VARCHAR(180) NULL,
  `tax_inclusive` TINYINT(1) NULL,
  `status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
  `featured` TINYINT(1) NOT NULL DEFAULT 0,
  `note` VARCHAR(255) NULL,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_seasonal_products_slug` (`slug`),
  KEY `idx_seasonal_products_status` (`status`),
  KEY `idx_seasonal_products_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Additive product-detail fields for existing category tables.
ALTER TABLE `stationary_products`
  ADD COLUMN IF NOT EXISTS `minimum_bulk_order` INT UNSIGNED NULL AFTER `note`,
  ADD COLUMN IF NOT EXISTS `features` TEXT NULL AFTER `minimum_bulk_order`,
  ADD COLUMN IF NOT EXISTS `made_by` VARCHAR(255) NULL AFTER `features`,
  ADD COLUMN IF NOT EXISTS `care_instructions` TEXT NULL AFTER `made_by`,
  ADD COLUMN IF NOT EXISTS `ideal_for` TEXT NULL AFTER `care_instructions`,
  ADD COLUMN IF NOT EXISTS `secondary_price` DECIMAL(10,2) NULL AFTER `ideal_for`,
  ADD COLUMN IF NOT EXISTS `secondary_price_label` VARCHAR(120) NULL AFTER `secondary_price`;
ALTER TABLE `handmade_products`
  ADD COLUMN IF NOT EXISTS `minimum_bulk_order` INT UNSIGNED NULL AFTER `note`,
  ADD COLUMN IF NOT EXISTS `features` TEXT NULL AFTER `minimum_bulk_order`,
  ADD COLUMN IF NOT EXISTS `made_by` VARCHAR(255) NULL AFTER `features`,
  ADD COLUMN IF NOT EXISTS `care_instructions` TEXT NULL AFTER `made_by`,
  ADD COLUMN IF NOT EXISTS `ideal_for` TEXT NULL AFTER `care_instructions`,
  ADD COLUMN IF NOT EXISTS `secondary_price` DECIMAL(10,2) NULL AFTER `ideal_for`,
  ADD COLUMN IF NOT EXISTS `secondary_price_label` VARCHAR(120) NULL AFTER `secondary_price`;
ALTER TABLE `cleaning_products`
  ADD COLUMN IF NOT EXISTS `minimum_bulk_order` INT UNSIGNED NULL AFTER `note`,
  ADD COLUMN IF NOT EXISTS `features` TEXT NULL AFTER `minimum_bulk_order`,
  ADD COLUMN IF NOT EXISTS `made_by` VARCHAR(255) NULL AFTER `features`,
  ADD COLUMN IF NOT EXISTS `care_instructions` TEXT NULL AFTER `made_by`,
  ADD COLUMN IF NOT EXISTS `ideal_for` TEXT NULL AFTER `care_instructions`,
  ADD COLUMN IF NOT EXISTS `secondary_price` DECIMAL(10,2) NULL AFTER `ideal_for`,
  ADD COLUMN IF NOT EXISTS `secondary_price_label` VARCHAR(120) NULL AFTER `secondary_price`;
ALTER TABLE `seasonal_products`
  ADD COLUMN IF NOT EXISTS `minimum_bulk_order` INT UNSIGNED NULL AFTER `note`,
  ADD COLUMN IF NOT EXISTS `features` TEXT NULL AFTER `minimum_bulk_order`,
  ADD COLUMN IF NOT EXISTS `made_by` VARCHAR(255) NULL AFTER `features`,
  ADD COLUMN IF NOT EXISTS `care_instructions` TEXT NULL AFTER `made_by`,
  ADD COLUMN IF NOT EXISTS `ideal_for` TEXT NULL AFTER `care_instructions`,
  ADD COLUMN IF NOT EXISTS `secondary_price` DECIMAL(10,2) NULL AFTER `ideal_for`,
  ADD COLUMN IF NOT EXISTS `secondary_price_label` VARCHAR(120) NULL AFTER `secondary_price`;

ALTER TABLE `stationary_products`
  ADD COLUMN IF NOT EXISTS `original_price` DECIMAL(10,2) NULL AFTER `price`,
  ADD COLUMN IF NOT EXISTS `discount_price` DECIMAL(10,2) NULL AFTER `original_price`,
  ADD COLUMN IF NOT EXISTS `image_views` JSON NULL AFTER `image`;
ALTER TABLE `handmade_products`
  ADD COLUMN IF NOT EXISTS `original_price` DECIMAL(10,2) NULL AFTER `price`,
  ADD COLUMN IF NOT EXISTS `discount_price` DECIMAL(10,2) NULL AFTER `original_price`,
  ADD COLUMN IF NOT EXISTS `image_views` JSON NULL AFTER `image`;
ALTER TABLE `cleaning_products`
  ADD COLUMN IF NOT EXISTS `original_price` DECIMAL(10,2) NULL AFTER `price`,
  ADD COLUMN IF NOT EXISTS `discount_price` DECIMAL(10,2) NULL AFTER `original_price`,
  ADD COLUMN IF NOT EXISTS `image_views` JSON NULL AFTER `image`;
ALTER TABLE `seasonal_products`
  ADD COLUMN IF NOT EXISTS `original_price` DECIMAL(10,2) NULL AFTER `price`,
  ADD COLUMN IF NOT EXISTS `discount_price` DECIMAL(10,2) NULL AFTER `original_price`,
  ADD COLUMN IF NOT EXISTS `image_views` JSON NULL AFTER `image`;
ALTER TABLE `stationary_products`
  ADD COLUMN IF NOT EXISTS `color_variants` JSON NULL AFTER `image_views`,
  ADD COLUMN IF NOT EXISTS `specifications` JSON NULL AFTER `color_variants`,
  ADD COLUMN IF NOT EXISTS `offers` JSON NULL AFTER `specifications`,
  ADD COLUMN IF NOT EXISTS `brand` VARCHAR(180) NULL AFTER `offers`,
  ADD COLUMN IF NOT EXISTS `average_rating` DECIMAL(2,1) NULL AFTER `brand`,
  ADD COLUMN IF NOT EXISTS `review_count` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `average_rating`,
  ADD COLUMN IF NOT EXISTS `delivery_estimate` VARCHAR(180) NULL AFTER `review_count`,
  ADD COLUMN IF NOT EXISTS `return_policy` VARCHAR(180) NULL AFTER `delivery_estimate`,
  ADD COLUMN IF NOT EXISTS `tax_inclusive` TINYINT(1) NULL AFTER `return_policy`;
ALTER TABLE `handmade_products`
  ADD COLUMN IF NOT EXISTS `color_variants` JSON NULL AFTER `image_views`,
  ADD COLUMN IF NOT EXISTS `specifications` JSON NULL AFTER `color_variants`,
  ADD COLUMN IF NOT EXISTS `offers` JSON NULL AFTER `specifications`,
  ADD COLUMN IF NOT EXISTS `brand` VARCHAR(180) NULL AFTER `offers`,
  ADD COLUMN IF NOT EXISTS `average_rating` DECIMAL(2,1) NULL AFTER `brand`,
  ADD COLUMN IF NOT EXISTS `review_count` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `average_rating`,
  ADD COLUMN IF NOT EXISTS `delivery_estimate` VARCHAR(180) NULL AFTER `review_count`,
  ADD COLUMN IF NOT EXISTS `return_policy` VARCHAR(180) NULL AFTER `delivery_estimate`,
  ADD COLUMN IF NOT EXISTS `tax_inclusive` TINYINT(1) NULL AFTER `return_policy`;
ALTER TABLE `cleaning_products`
  ADD COLUMN IF NOT EXISTS `color_variants` JSON NULL AFTER `image_views`,
  ADD COLUMN IF NOT EXISTS `specifications` JSON NULL AFTER `color_variants`,
  ADD COLUMN IF NOT EXISTS `offers` JSON NULL AFTER `specifications`,
  ADD COLUMN IF NOT EXISTS `brand` VARCHAR(180) NULL AFTER `offers`,
  ADD COLUMN IF NOT EXISTS `average_rating` DECIMAL(2,1) NULL AFTER `brand`,
  ADD COLUMN IF NOT EXISTS `review_count` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `average_rating`,
  ADD COLUMN IF NOT EXISTS `delivery_estimate` VARCHAR(180) NULL AFTER `review_count`,
  ADD COLUMN IF NOT EXISTS `return_policy` VARCHAR(180) NULL AFTER `delivery_estimate`,
  ADD COLUMN IF NOT EXISTS `tax_inclusive` TINYINT(1) NULL AFTER `return_policy`;
ALTER TABLE `seasonal_products`
  ADD COLUMN IF NOT EXISTS `color_variants` JSON NULL AFTER `image_views`,
  ADD COLUMN IF NOT EXISTS `specifications` JSON NULL AFTER `color_variants`,
  ADD COLUMN IF NOT EXISTS `offers` JSON NULL AFTER `specifications`,
  ADD COLUMN IF NOT EXISTS `brand` VARCHAR(180) NULL AFTER `offers`,
  ADD COLUMN IF NOT EXISTS `average_rating` DECIMAL(2,1) NULL AFTER `brand`,
  ADD COLUMN IF NOT EXISTS `review_count` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `average_rating`,
  ADD COLUMN IF NOT EXISTS `delivery_estimate` VARCHAR(180) NULL AFTER `review_count`,
  ADD COLUMN IF NOT EXISTS `return_policy` VARCHAR(180) NULL AFTER `delivery_estimate`,
  ADD COLUMN IF NOT EXISTS `tax_inclusive` TINYINT(1) NULL AFTER `return_policy`;
