diff --git a/dirs/ecommerce/migrations/20260719133457.sql b/dirs/ecommerce/migrations/20260719133457.sql new file mode 100644 index 0000000..c822db6 --- /dev/null +++ b/dirs/ecommerce/migrations/20260719133457.sql @@ -0,0 +1,2 @@ +-- Modify "users" table +ALTER TABLE `users` DROP CHECK `users_chk_1`, ADD CONSTRAINT `users_chk_1` CHECK (regexp_like(`email`,_utf8mb4'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$')), DROP COLUMN `email_address`, ADD COLUMN `email` varchar(255) NOT NULL COMMENT "Email address of the user, now stored case-insensitively" COLLATE utf8mb4_0900_as_ci AFTER `user_name`, DROP INDEX `user_name_email_address`, DROP INDEX `users_email_address_lower`, ADD UNIQUE INDEX `email` (`email`), ADD UNIQUE INDEX `user_name_email` (`user_name`, `email`), ADD INDEX `users_email_lower` ((lower(`email`))); diff --git a/dirs/ecommerce/migrations/atlas.sum b/dirs/ecommerce/migrations/atlas.sum index f9ee194..e31550c 100644 --- a/dirs/ecommerce/migrations/atlas.sum +++ b/dirs/ecommerce/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:eTBfJwavo3XORhrweMHfdURc3YCiguAjxjCg7wWCjgc= +h1:e2DFlyyT/K31CkqCY7pUH+nI/hL98hl2qtrK2lc3Bug= 20230316085611.sql h1:br6W6LPEnnsejlz/7hRm9zthwStCzjN2vZkqVPxlmvo= 20230316090502.sql h1:GfeRjkSeoCt3JVRtLQNa/r50lRfpAPXS7AqTU2ZNFgY= 20230531091333_products_categories.sql h1:59q2M59dV5dJNv4Lyb2TAJz8V6HekgkLn9z4DoL98jA= @@ -203,3 +203,4 @@ h1:eTBfJwavo3XORhrweMHfdURc3YCiguAjxjCg7wWCjgc= 20260712133446.sql h1:0wF99QcRneHiHDAdR4ZL+9T3PsD5w5a1sLWu2yUWMxU= 20260714133804.sql h1:6V6nA2C67RtwZ4Px6Ljjng5sVj4VnMuzWhLIRvbUjzI= 20260716133811.sql h1:DOxXXrqWlPuvU6PJM1wOpIJ7h7BzTWbnr9oWNFBcZkE= +20260719133457.sql h1:e/B0w2SCneq5Yglvcf86pL1yCMoqhW4JD4/7lHemELY= diff --git a/dirs/ecommerce/schema.sql b/dirs/ecommerce/schema.sql index c8521f9..301bfb1 100644 --- a/dirs/ecommerce/schema.sql +++ b/dirs/ecommerce/schema.sql @@ -2,7 +2,7 @@ CREATE TABLE `users` ( `id` int NOT NULL COMMENT 'Unique identifier for each user', `user_name` varchar(255) COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT 'The username of the user, must be unique', - `email_address` varchar(255) COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT 'Email address of the user, now stored case-insensitively', + `email` varchar(255) COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT 'Email address of the user, now stored case-insensitively', `phone_number` char(15) NULL COMMENT 'Phone number of the user, now allowed to be NULL', `country_code` char(3) NULL DEFAULT '+1' COMMENT 'Country code for the phone number, defaults to US and can now be NULL', `is_admin` tinyint(1) NULL DEFAULT 0 COMMENT 'Flag indicating if the user is an admin, defaults to false', @@ -25,14 +25,14 @@ CREATE TABLE `users` ( `phone_number_verified_at` timestamp NULL COMMENT 'Timestamp of when the user phone number was verified', `preferred_language` varchar(10) NOT NULL DEFAULT 'en' COMMENT 'Preferred language of the user, defaults to English', PRIMARY KEY (`id`), - UNIQUE (`email_address`), + UNIQUE (`email`), UNIQUE INDEX `user_name` (`user_name`), UNIQUE INDEX `phone_number` (`phone_number`), - UNIQUE INDEX `user_name_email_address` (`user_name`, `email_address`), + UNIQUE INDEX `user_name_email` (`user_name`, `email`), UNIQUE INDEX `country_code_phone_number` (`country_code`, `phone_number`), INDEX `last_login` (`last_login`), - INDEX `users_email_address_lower` ((LOWER(`email_address`))), - CHECK (`email_address` REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$'), + INDEX `users_email_lower` ((LOWER(`email`))), + CHECK (`email` REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$'), CHECK (`phone_number` REGEXP '^[0-9]{1,15}$' OR `phone_number` IS NULL), CHECK (`last_order_date` IS NULL OR `last_order_date` >= `created_at`), CHECK ((`phone_verified` = 0) OR (`phone_number` IS NOT NULL AND `phone_number` REGEXP '^[0-9]{1,15}$')), @@ -266,4 +266,4 @@ BEGIN SET NEW.last_login = CURRENT_TIMESTAMP; END IF; END$$ -DELIMITER ; \ No newline at end of file +DELIMITER ;