From 1c1093ba0fb89da56665945bc0052032aa92eab2 Mon Sep 17 00:00:00 2001 From: morgan Date: Mon, 29 Apr 2024 15:00:11 +0200 Subject: [PATCH] Update missing unique key script --- ...issing_unique_key_from_authorization_role.php} | 15 ++++++++++++++- upgrade/sql/1.7.1.0.sql | 4 +--- upgrade/sql/8.1.6-catchup.sql | 3 +-- 3 files changed, 16 insertions(+), 6 deletions(-) rename upgrade/php/{remove_duplicates_from_authorization_role.php => add_missing_unique_key_from_authorization_role.php} (85%) diff --git a/upgrade/php/remove_duplicates_from_authorization_role.php b/upgrade/php/add_missing_unique_key_from_authorization_role.php similarity index 85% rename from upgrade/php/remove_duplicates_from_authorization_role.php rename to upgrade/php/add_missing_unique_key_from_authorization_role.php index c403389e4..ab6f0f108 100644 --- a/upgrade/php/remove_duplicates_from_authorization_role.php +++ b/upgrade/php/add_missing_unique_key_from_authorization_role.php @@ -25,8 +25,17 @@ */ // Allows you to catch up on a forgotten uniqueness constraint on the roles -function remove_duplicates_from_authorization_role() +function add_missing_unique_key_from_authorization_role() { + // Verify if we need to create unique key + $keys = Db::getInstance()->executeS( + 'SHOW KEYS FROM ' . _DB_PREFIX_ . "authorization_role WHERE Key_name='slug'" + ); + + if (!empty($keys)) { + return; + } + // We recover the duplicates that we want to keep $duplicates = Db::getInstance()->executeS( 'SELECT MIN(id_authorization_role) AS keep_ID, slug FROM ' . _DB_PREFIX_ . 'authorization_role GROUP BY slug HAVING COUNT(*) > 1' @@ -51,4 +60,8 @@ function remove_duplicates_from_authorization_role() Db::getInstance()->delete('authorization_role', '`id_authorization_role` = ' . (int) $elementToRemove['id_authorization_role']); } } + + Db::getInstance()->execute( + 'ALTER TABLE ' . _DB_PREFIX_ . "authorization_role ADD UNIQUE KEY `slug` (`slug`)" + ); } diff --git a/upgrade/sql/1.7.1.0.sql b/upgrade/sql/1.7.1.0.sql index 715c727ec..a26324a5f 100644 --- a/upgrade/sql/1.7.1.0.sql +++ b/upgrade/sql/1.7.1.0.sql @@ -111,6 +111,4 @@ ALTER TABLE `PREFIX_tab` CHANGE `icon` `icon` VARCHAR(32) DEFAULT NULL; ALTER TABLE `PREFIX_tab_lang` CHANGE `id_tab` `id_tab` INT(11) NOT NULL; ALTER TABLE `PREFIX_tab_lang` CHANGE `id_lang` `id_lang` INT(11) NOT NULL; -/* PHP:remove_duplicates_from_authorization_role(); */; - -ALTER TABLE `PREFIX_authorization_role` ADD UNIQUE KEY `slug` (`slug`); +/* PHP:add_missing_unique_key_from_authorization_role(); */; diff --git a/upgrade/sql/8.1.6-catchup.sql b/upgrade/sql/8.1.6-catchup.sql index b20c79f5e..bd38e4d2b 100644 --- a/upgrade/sql/8.1.6-catchup.sql +++ b/upgrade/sql/8.1.6-catchup.sql @@ -7,8 +7,7 @@ ALTER TABLE `PREFIX_product_shop` CHANGE `id_type_redirected` `id_type_redirecte ALTER TABLE `PREFIX_tab` CHANGE `active` `active` TINYINT(1) NOT NULL; ALTER TABLE `PREFIX_tab` CHANGE `icon` `icon` VARCHAR(32) DEFAULT NULL; -/* PHP:remove_duplicates_from_authorization_role(); */; -ALTER TABLE `PREFIX_authorization_role` ADD UNIQUE KEY `slug` (`slug`); +/* PHP:add_missing_unique_key_from_authorization_role(); */; /* 1.7.2.0 */ ALTER TABLE `PREFIX_stock_mvt` CHANGE `sign` `sign` SMALLINT(6) NOT NULL DEFAULT '1';