-- Modify "users" table ALTER TABLE `users` DROP CONSTRAINT `name_not_empty`, ADD CONSTRAINT `first_last_not_empty` CHECK ((`first_name` <> _utf8mb4'') and (`last_name` <> _utf8mb4'')), DROP COLUMN `name`, ADD COLUMN `first_name` varchar(255) NOT NULL, ADD COLUMN `last_name` varchar(255) NOT NULL; -- Create "session_devices" table CREATE TABLE `session_devices` (`id` char(36) NOT NULL, `ip_address` varchar(50) NOT NULL, `user_agent` varchar(512) NOT NULL, `location` varchar(512) NOT NULL, `created_at` timestamp NOT NULL, `updated_at` timestamp NULL, PRIMARY KEY (`id`), INDEX `sessiondevice_ip_address_user_agent` (`ip_address`, `user_agent`), INDEX `sessiondevice_location_updated_at` (`location`, `updated_at`)) CHARSET utf8mb4 COLLATE utf8mb4_bin; -- Create "sessions" table CREATE TABLE `sessions` (`id` char(36) NOT NULL, `active` bool NOT NULL DEFAULT 0, `issued_at` timestamp NOT NULL, `expires_at` timestamp NULL, `token` varchar(255) NULL, `method` json NULL, `device_id` char(36) NULL, PRIMARY KEY (`id`), INDEX `session_active_expires_at` (`active`, `expires_at`), INDEX `sessions_session_devices_sessions` (`device_id`), CONSTRAINT `sessions_session_devices_sessions` FOREIGN KEY (`device_id`) REFERENCES `session_devices` (`id`) ON UPDATE NO ACTION ON DELETE SET NULL, CONSTRAINT `token_length` CHECK (length(`token`) = 64)) CHARSET utf8mb4 COLLATE utf8mb4_bin;