diff --git a/dirs/ecommerce/migrations/20260816131633.sql b/dirs/ecommerce/migrations/20260816131633.sql new file mode 100644 index 0000000..c822db6 --- /dev/null +++ b/dirs/ecommerce/migrations/20260816131633.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 ec45e53..14edde4 100644 --- a/dirs/ecommerce/migrations/atlas.sum +++ b/dirs/ecommerce/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:DcCz8/qzp/E2vdt+hfDPuTUJG9M+FxYJsWElgmwUVbo= +h1:6hsvkVlkBq+9+JNFMTkoVwBhpyGOxqZFfN0U6z11yMA= 20230316085611.sql h1:br6W6LPEnnsejlz/7hRm9zthwStCzjN2vZkqVPxlmvo= 20230316090502.sql h1:GfeRjkSeoCt3JVRtLQNa/r50lRfpAPXS7AqTU2ZNFgY= 20230531091333_products_categories.sql h1:59q2M59dV5dJNv4Lyb2TAJz8V6HekgkLn9z4DoL98jA= @@ -210,3 +210,4 @@ h1:DcCz8/qzp/E2vdt+hfDPuTUJG9M+FxYJsWElgmwUVbo= 20260802133449.sql h1:lI26c8tOstqPnXPpIspwPMa4xrxy98GWDxoqRGFj3io= 20260809132451.sql h1:VYmVbj3XlpuBJwl052x+u7Esq3PnhTke06c0D85ghFc= 20260811133333.sql h1:G4rXV69zLLiWHBSV3loTjs3AeHufqbi5a4CTaND3BS4= +20260816131633.sql h1:JHos8p6D630Pzm0uUUyKiW4WpuOuOBKjQJwbuzRUHXU= diff --git a/dirs/ecommerce/schema.sql b/dirs/ecommerce/schema.sql index 4896ce2..2450e64 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` ((COALESCE(`phone_number`, CONCAT('NULL#', `id`)))), - 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}$')),