103 lines
3.2 KiB
SQL
103 lines
3.2 KiB
SQL
|
|
/*
|
||
|
|
Consumer profile split migration.
|
||
|
|
|
||
|
|
Existing profile data is copied into `individual_consumers` before the source
|
||
|
|
columns are removed from `consumers`.
|
||
|
|
*/
|
||
|
|
-- AlterTable
|
||
|
|
ALTER TABLE `consumers`
|
||
|
|
ADD COLUMN `type` ENUM('INDIVIDUAL', 'LEGAL') NOT NULL DEFAULT 'INDIVIDUAL';
|
||
|
|
|
||
|
|
UPDATE `consumers` SET `type` = 'INDIVIDUAL';
|
||
|
|
|
||
|
|
-- DropForeignKey
|
||
|
|
ALTER TABLE `consumers` DROP FOREIGN KEY `consumers_partner_id_fkey`;
|
||
|
|
|
||
|
|
-- DropIndex
|
||
|
|
DROP INDEX `consumers_mobile_number_partner_id_key` ON `consumers`;
|
||
|
|
|
||
|
|
-- DropIndex
|
||
|
|
DROP INDEX `consumers_national_code_partner_id_key` ON `consumers`;
|
||
|
|
|
||
|
|
-- DropIndex
|
||
|
|
DROP INDEX `consumers_partner_id_fkey` ON `consumers`;
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE `individual_consumers` (
|
||
|
|
`first_name` VARCHAR(191) NOT NULL,
|
||
|
|
`last_name` VARCHAR(191) NOT NULL,
|
||
|
|
`mobile_number` VARCHAR(191) NOT NULL,
|
||
|
|
`national_code` VARCHAR(191) NOT NULL,
|
||
|
|
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
|
||
|
|
`updated_at` TIMESTAMP(0) NOT NULL,
|
||
|
|
`partner_id` VARCHAR(191) NOT NULL,
|
||
|
|
`consumer_id` VARCHAR(191) NOT NULL,
|
||
|
|
UNIQUE INDEX `individual_consumers_mobile_number_consumer_id_key` (
|
||
|
|
`mobile_number`,
|
||
|
|
`consumer_id`
|
||
|
|
),
|
||
|
|
UNIQUE INDEX `individual_consumers_partner_id_national_code_key` (`partner_id`, `national_code`),
|
||
|
|
PRIMARY KEY (`consumer_id`)
|
||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE `legal_consumers` (
|
||
|
|
`name` VARCHAR(191) NOT NULL,
|
||
|
|
`registration_code` VARCHAR(191) NOT NULL,
|
||
|
|
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
|
||
|
|
`updated_at` TIMESTAMP(0) NOT NULL,
|
||
|
|
`partner_id` VARCHAR(191) NOT NULL,
|
||
|
|
`consumer_id` VARCHAR(191) NOT NULL,
|
||
|
|
UNIQUE INDEX `legal_consumers_partner_id_registration_code_key` (
|
||
|
|
`partner_id`,
|
||
|
|
`registration_code`
|
||
|
|
),
|
||
|
|
PRIMARY KEY (`consumer_id`)
|
||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
|
|
||
|
|
INSERT INTO
|
||
|
|
`individual_consumers` (
|
||
|
|
`first_name`,
|
||
|
|
`last_name`,
|
||
|
|
`mobile_number`,
|
||
|
|
`national_code`,
|
||
|
|
`created_at`,
|
||
|
|
`updated_at`,
|
||
|
|
`partner_id`,
|
||
|
|
`consumer_id`
|
||
|
|
)
|
||
|
|
SELECT
|
||
|
|
`first_name`,
|
||
|
|
`last_name`,
|
||
|
|
`mobile_number`,
|
||
|
|
`national_code`,
|
||
|
|
`created_at`,
|
||
|
|
`updated_at`,
|
||
|
|
`partner_id`,
|
||
|
|
`id`
|
||
|
|
FROM `consumers`;
|
||
|
|
|
||
|
|
ALTER TABLE `consumers`
|
||
|
|
DROP COLUMN `first_name`,
|
||
|
|
DROP COLUMN `last_name`,
|
||
|
|
DROP COLUMN `mobile_number`,
|
||
|
|
DROP COLUMN `national_code`,
|
||
|
|
DROP COLUMN `partner_id`,
|
||
|
|
MODIFY `type` ENUM('INDIVIDUAL', 'LEGAL') NOT NULL;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE `individual_consumers`
|
||
|
|
ADD CONSTRAINT `individual_consumers_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE `individual_consumers`
|
||
|
|
ADD CONSTRAINT `individual_consumers_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE `legal_consumers`
|
||
|
|
ADD CONSTRAINT `legal_consumers_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE `legal_consumers`
|
||
|
|
ADD CONSTRAINT `legal_consumers_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|