-
-
Notifications
You must be signed in to change notification settings - Fork 958
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Database migration issues (unnecessary queries generated) [Summary Issue] #333
Comments
You have repetition of
I think only one was meant to be there. |
Thanks, edited 👍 |
Any update here? |
BaselineI internally updated my development Vendure repo to use TypeORM 0.2.25 (most current version), started the server with In theory, the migration should be empty, so the results of that migration give an idea of the extent of the problem with each supported DB type. Here are the results: MySQL (using MariaDB)import { MigrationInterface, QueryRunner } from 'typeorm';
// Mysql, TypeORM 0.2.25
export class noop1598600900289 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(
'ALTER TABLE `country_translation` DROP FOREIGN KEY `FK_20958e5bdb4c996c18ca63d18e4`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `country_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` DROP FOREIGN KEY `FK_afe9f917a1c82b9e9e69f7c6129`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` DROP FOREIGN KEY `FK_c9ca2f58d4517460435cbd8b4c9`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` CHANGE `defaultTaxZoneId` `defaultTaxZoneId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` CHANGE `defaultShippingZoneId` `defaultShippingZoneId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `user` CHANGE `deletedAt` `deletedAt` datetime NULL', undefined);
await queryRunner.query('ALTER TABLE `user` CHANGE `lastLogin` `lastLogin` datetime NULL', undefined);
await queryRunner.query(
'ALTER TABLE `authentication_method` DROP FOREIGN KEY `FK_00cbe87bc0d4e36758d61bd31d6`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `identifier` `identifier` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `passwordHash` `passwordHash` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `verificationToken` `verificationToken` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `passwordResetToken` `passwordResetToken` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `identifierChangeToken` `identifierChangeToken` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `pendingIdentifier` `pendingIdentifier` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `strategy` `strategy` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `externalIdentifier` `externalIdentifier` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `metadata` `metadata` text NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` CHANGE `userId` `userId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `asset` CHANGE `focalPoint` `focalPoint` text NULL', undefined);
await queryRunner.query(
'ALTER TABLE `collection_translation` DROP FOREIGN KEY `FK_e329f9036210d75caa1d8f2154a`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` DROP FOREIGN KEY `FK_7256fef1bb42f1b38156b7449f5`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` DROP FOREIGN KEY `FK_4257b61275144db89fa0f5dc059`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` CHANGE `featuredAssetId` `featuredAssetId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `collection` CHANGE `parentId` `parentId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `facet_translation` DROP FOREIGN KEY `FK_eaea53f44bf9e97790d38a3d68f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value_translation` DROP FOREIGN KEY `FK_3d6e45823b65de808a66cb1423b`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value` DROP FOREIGN KEY `FK_d101dc2265a7341be3d94968c5b`',
undefined,
);
await queryRunner.query('ALTER TABLE `facet_value` CHANGE `facetId` `facetId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `product_translation` DROP FOREIGN KEY `FK_7dbc75cb4e8b002620c4dbfdac5`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` DROP FOREIGN KEY `FK_91a19e6613534949a4ce6e76ff8`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` CHANGE `featuredAssetId` `featuredAssetId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group_translation` DROP FOREIGN KEY `FK_93751abc1451972c02e033b766c`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group` DROP FOREIGN KEY `FK_a6e91739227bf4d442f23c52c75`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group` CHANGE `productId` `productId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_translation` DROP FOREIGN KEY `FK_a79a443c1f7841f3851767faa6d`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` DROP FOREIGN KEY `FK_e65ba3882557cab4febb54809bb`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` DROP FOREIGN KEY `FK_cbb0990e398bf7713aebdd38482`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` CHANGE `productVariantId` `productVariantId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` CHANGE `orderItemId` `orderItemId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_price` DROP FOREIGN KEY `FK_e6126cd268aea6e9b31d89af9ab`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_price` CHANGE `variantId` `variantId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_translation` DROP FOREIGN KEY `FK_420f4d6fb75d38b9dca79bc43b4`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_translation` CHANGE `baseId` `baseId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_6e420052844edf3a5506d863ce6`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_0e6f516053cf982b537836e21cf`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_e38dca0d82fd64c7cf8aac8b8ef`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` CHANGE `productId` `productId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` CHANGE `featuredAssetId` `featuredAssetId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` CHANGE `taxCategoryId` `taxCategoryId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `administrator` DROP FOREIGN KEY `FK_1966e18ce6a39a82b19204704d7`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `administrator` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `administrator` CHANGE `userId` `userId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `payment` DROP FOREIGN KEY `FK_d09d285fe1645cd2f0db811e293`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `payment` CHANGE `errorMessage` `errorMessage` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `payment` CHANGE `transactionId` `transactionId` varchar(255) NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `payment` CHANGE `orderId` `orderId` int NULL', undefined);
await queryRunner.query('ALTER TABLE `refund` CHANGE `reason` `reason` varchar(255) NULL', undefined);
await queryRunner.query(
'ALTER TABLE `refund` CHANGE `transactionId` `transactionId` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_eed51be48640c21e1c76d3e9fbe`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_3e5161133689fba526377cbccd3`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_69384323444206753f0cdeb64e0`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` CHANGE `fulfillmentId` `fulfillmentId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `order_item` CHANGE `refundId` `refundId` int NULL', undefined);
await queryRunner.query('ALTER TABLE `order_item` CHANGE `lineId` `lineId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_cbcd22193eda94668e84d33f185`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_77be94ce9ec6504466179462275`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_9f065453910ea77d4be8e92618f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_239cfca2a55b98b90b6bef2e44f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` CHANGE `productVariantId` `productVariantId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` CHANGE `taxCategoryId` `taxCategoryId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` CHANGE `featuredAssetId` `featuredAssetId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `order_line` CHANGE `orderId` `orderId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `promotion` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `promotion` CHANGE `startsAt` `startsAt` datetime NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `promotion` CHANGE `endsAt` `endsAt` datetime NULL', undefined);
await queryRunner.query(
'ALTER TABLE `promotion` CHANGE `couponCode` `couponCode` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `promotion` CHANGE `perCustomerUsageLimit` `perCustomerUsageLimit` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `shipping_method` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` DROP FOREIGN KEY `FK_4af424d3e7b2c3cb26e075e20fc`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` DROP FOREIGN KEY `FK_124456e637cca7a415897dce659`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` CHANGE `orderPlacedAt` `orderPlacedAt` datetime NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` CHANGE `shippingMethodId` `shippingMethodId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `order` CHANGE `taxZoneId` `taxZoneId` int NULL', undefined);
await queryRunner.query('ALTER TABLE `order` CHANGE `customerId` `customerId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `customer` DROP FOREIGN KEY `FK_3f62b42ed23958b120c235f74df`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `customer` CHANGE `deletedAt` `deletedAt` datetime NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `customer` CHANGE `title` `title` varchar(255) NULL', undefined);
await queryRunner.query(
'ALTER TABLE `customer` CHANGE `phoneNumber` `phoneNumber` varchar(255) NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `customer` CHANGE `userId` `userId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `address` DROP FOREIGN KEY `FK_dc34d382b493ade1f70e834c4d3`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` DROP FOREIGN KEY `FK_d87215343c3a3a67e6a0b7f3ea9`',
undefined,
);
await queryRunner.query('ALTER TABLE `address` CHANGE `customerId` `customerId` int NULL', undefined);
await queryRunner.query('ALTER TABLE `address` CHANGE `countryId` `countryId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `session` DROP FOREIGN KEY `FK_7a75399a4f4ffa48ee02e98c059`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` DROP FOREIGN KEY `FK_3d2f174ef04fb312fdebd0ddc53`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` CHANGE `authenticationStrategy` `authenticationStrategy` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` CHANGE `activeOrderId` `activeOrderId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `session` CHANGE `userId` `userId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_7ee3306d7638aa85ca90d672198`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_9872fc7de2f4e532fd3230d1915`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_8b5ab52fc8887c1a769b9276caf`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` CHANGE `categoryId` `categoryId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `tax_rate` CHANGE `zoneId` `zoneId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `tax_rate` CHANGE `customerGroupId` `customerGroupId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_92f8c334ef06275f9586fd01832`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_43ac602f839847fdb91101f30ec`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_3a05127e67435b4d2332ded7c9e`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` CHANGE `administratorId` `administratorId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` CHANGE `customerId` `customerId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `history_entry` CHANGE `orderId` `orderId` int NULL', undefined);
await queryRunner.query(
'ALTER TABLE `search_index_item` CHANGE `productPreviewFocalPoint` `productPreviewFocalPoint` text NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `search_index_item` CHANGE `productVariantPreviewFocalPoint` `productVariantPreviewFocalPoint` text NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `search_index_item` CHANGE `productAssetId` `productAssetId` int NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `search_index_item` CHANGE `productVariantAssetId` `productVariantAssetId` int NULL',
undefined,
);
await queryRunner.query('ALTER TABLE `job_record` CHANGE `data` `data` text NULL', undefined);
await queryRunner.query('ALTER TABLE `job_record` CHANGE `result` `result` text NULL', undefined);
await queryRunner.query(
'ALTER TABLE `job_record` CHANGE `error` `error` varchar(255) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `job_record` CHANGE `startedAt` `startedAt` datetime(6) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `job_record` CHANGE `settledAt` `settledAt` datetime(6) NULL',
undefined,
);
await queryRunner.query(
'ALTER TABLE `country_translation` ADD CONSTRAINT `FK_20958e5bdb4c996c18ca63d18e4` FOREIGN KEY (`baseId`) REFERENCES `country`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` ADD CONSTRAINT `FK_afe9f917a1c82b9e9e69f7c6129` FOREIGN KEY (`defaultTaxZoneId`) REFERENCES `zone`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` ADD CONSTRAINT `FK_c9ca2f58d4517460435cbd8b4c9` FOREIGN KEY (`defaultShippingZoneId`) REFERENCES `zone`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` ADD CONSTRAINT `FK_00cbe87bc0d4e36758d61bd31d6` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection_translation` ADD CONSTRAINT `FK_e329f9036210d75caa1d8f2154a` FOREIGN KEY (`baseId`) REFERENCES `collection`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` ADD CONSTRAINT `FK_7256fef1bb42f1b38156b7449f5` FOREIGN KEY (`featuredAssetId`) REFERENCES `asset`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` ADD CONSTRAINT `FK_4257b61275144db89fa0f5dc059` FOREIGN KEY (`parentId`) REFERENCES `collection`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_translation` ADD CONSTRAINT `FK_eaea53f44bf9e97790d38a3d68f` FOREIGN KEY (`baseId`) REFERENCES `facet`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value_translation` ADD CONSTRAINT `FK_3d6e45823b65de808a66cb1423b` FOREIGN KEY (`baseId`) REFERENCES `facet_value`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value` ADD CONSTRAINT `FK_d101dc2265a7341be3d94968c5b` FOREIGN KEY (`facetId`) REFERENCES `facet`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_translation` ADD CONSTRAINT `FK_7dbc75cb4e8b002620c4dbfdac5` FOREIGN KEY (`baseId`) REFERENCES `product`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` ADD CONSTRAINT `FK_91a19e6613534949a4ce6e76ff8` FOREIGN KEY (`featuredAssetId`) REFERENCES `asset`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group_translation` ADD CONSTRAINT `FK_93751abc1451972c02e033b766c` FOREIGN KEY (`baseId`) REFERENCES `product_option_group`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group` ADD CONSTRAINT `FK_a6e91739227bf4d442f23c52c75` FOREIGN KEY (`productId`) REFERENCES `product`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_translation` ADD CONSTRAINT `FK_a79a443c1f7841f3851767faa6d` FOREIGN KEY (`baseId`) REFERENCES `product_option`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` ADD CONSTRAINT `FK_e65ba3882557cab4febb54809bb` FOREIGN KEY (`productVariantId`) REFERENCES `product_variant`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` ADD CONSTRAINT `FK_cbb0990e398bf7713aebdd38482` FOREIGN KEY (`orderItemId`) REFERENCES `order_item`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_price` ADD CONSTRAINT `FK_e6126cd268aea6e9b31d89af9ab` FOREIGN KEY (`variantId`) REFERENCES `product_variant`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_translation` ADD CONSTRAINT `FK_420f4d6fb75d38b9dca79bc43b4` FOREIGN KEY (`baseId`) REFERENCES `product_variant`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_0e6f516053cf982b537836e21cf` FOREIGN KEY (`featuredAssetId`) REFERENCES `asset`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_e38dca0d82fd64c7cf8aac8b8ef` FOREIGN KEY (`taxCategoryId`) REFERENCES `tax_category`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_6e420052844edf3a5506d863ce6` FOREIGN KEY (`productId`) REFERENCES `product`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `administrator` ADD CONSTRAINT `FK_1966e18ce6a39a82b19204704d7` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `payment` ADD CONSTRAINT `FK_d09d285fe1645cd2f0db811e293` FOREIGN KEY (`orderId`) REFERENCES `order`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_69384323444206753f0cdeb64e0` FOREIGN KEY (`lineId`) REFERENCES `order_line`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_eed51be48640c21e1c76d3e9fbe` FOREIGN KEY (`fulfillmentId`) REFERENCES `fulfillment`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_3e5161133689fba526377cbccd3` FOREIGN KEY (`refundId`) REFERENCES `refund`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_cbcd22193eda94668e84d33f185` FOREIGN KEY (`productVariantId`) REFERENCES `product_variant`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_77be94ce9ec6504466179462275` FOREIGN KEY (`taxCategoryId`) REFERENCES `tax_category`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_9f065453910ea77d4be8e92618f` FOREIGN KEY (`featuredAssetId`) REFERENCES `asset`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_239cfca2a55b98b90b6bef2e44f` FOREIGN KEY (`orderId`) REFERENCES `order`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` ADD CONSTRAINT `FK_124456e637cca7a415897dce659` FOREIGN KEY (`customerId`) REFERENCES `customer`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` ADD CONSTRAINT `FK_4af424d3e7b2c3cb26e075e20fc` FOREIGN KEY (`shippingMethodId`) REFERENCES `shipping_method`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `customer` ADD CONSTRAINT `FK_3f62b42ed23958b120c235f74df` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` ADD CONSTRAINT `FK_dc34d382b493ade1f70e834c4d3` FOREIGN KEY (`customerId`) REFERENCES `customer`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` ADD CONSTRAINT `FK_d87215343c3a3a67e6a0b7f3ea9` FOREIGN KEY (`countryId`) REFERENCES `country`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` ADD CONSTRAINT `FK_7a75399a4f4ffa48ee02e98c059` FOREIGN KEY (`activeOrderId`) REFERENCES `order`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` ADD CONSTRAINT `FK_3d2f174ef04fb312fdebd0ddc53` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_7ee3306d7638aa85ca90d672198` FOREIGN KEY (`categoryId`) REFERENCES `tax_category`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_9872fc7de2f4e532fd3230d1915` FOREIGN KEY (`zoneId`) REFERENCES `zone`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_8b5ab52fc8887c1a769b9276caf` FOREIGN KEY (`customerGroupId`) REFERENCES `customer_group`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_92f8c334ef06275f9586fd01832` FOREIGN KEY (`administratorId`) REFERENCES `administrator`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_43ac602f839847fdb91101f30ec` FOREIGN KEY (`customerId`) REFERENCES `customer`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_3a05127e67435b4d2332ded7c9e` FOREIGN KEY (`orderId`) REFERENCES `order`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_3a05127e67435b4d2332ded7c9e`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_43ac602f839847fdb91101f30ec`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` DROP FOREIGN KEY `FK_92f8c334ef06275f9586fd01832`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_8b5ab52fc8887c1a769b9276caf`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_9872fc7de2f4e532fd3230d1915`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` DROP FOREIGN KEY `FK_7ee3306d7638aa85ca90d672198`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` DROP FOREIGN KEY `FK_3d2f174ef04fb312fdebd0ddc53`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` DROP FOREIGN KEY `FK_7a75399a4f4ffa48ee02e98c059`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` DROP FOREIGN KEY `FK_d87215343c3a3a67e6a0b7f3ea9`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` DROP FOREIGN KEY `FK_dc34d382b493ade1f70e834c4d3`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `customer` DROP FOREIGN KEY `FK_3f62b42ed23958b120c235f74df`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` DROP FOREIGN KEY `FK_4af424d3e7b2c3cb26e075e20fc`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` DROP FOREIGN KEY `FK_124456e637cca7a415897dce659`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_239cfca2a55b98b90b6bef2e44f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_9f065453910ea77d4be8e92618f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_77be94ce9ec6504466179462275`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` DROP FOREIGN KEY `FK_cbcd22193eda94668e84d33f185`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_3e5161133689fba526377cbccd3`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_eed51be48640c21e1c76d3e9fbe`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` DROP FOREIGN KEY `FK_69384323444206753f0cdeb64e0`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `payment` DROP FOREIGN KEY `FK_d09d285fe1645cd2f0db811e293`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `administrator` DROP FOREIGN KEY `FK_1966e18ce6a39a82b19204704d7`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_6e420052844edf3a5506d863ce6`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_e38dca0d82fd64c7cf8aac8b8ef`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` DROP FOREIGN KEY `FK_0e6f516053cf982b537836e21cf`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_translation` DROP FOREIGN KEY `FK_420f4d6fb75d38b9dca79bc43b4`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_price` DROP FOREIGN KEY `FK_e6126cd268aea6e9b31d89af9ab`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` DROP FOREIGN KEY `FK_cbb0990e398bf7713aebdd38482`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` DROP FOREIGN KEY `FK_e65ba3882557cab4febb54809bb`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_translation` DROP FOREIGN KEY `FK_a79a443c1f7841f3851767faa6d`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group` DROP FOREIGN KEY `FK_a6e91739227bf4d442f23c52c75`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group_translation` DROP FOREIGN KEY `FK_93751abc1451972c02e033b766c`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` DROP FOREIGN KEY `FK_91a19e6613534949a4ce6e76ff8`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_translation` DROP FOREIGN KEY `FK_7dbc75cb4e8b002620c4dbfdac5`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value` DROP FOREIGN KEY `FK_d101dc2265a7341be3d94968c5b`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value_translation` DROP FOREIGN KEY `FK_3d6e45823b65de808a66cb1423b`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_translation` DROP FOREIGN KEY `FK_eaea53f44bf9e97790d38a3d68f`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` DROP FOREIGN KEY `FK_4257b61275144db89fa0f5dc059`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` DROP FOREIGN KEY `FK_7256fef1bb42f1b38156b7449f5`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection_translation` DROP FOREIGN KEY `FK_e329f9036210d75caa1d8f2154a`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` DROP FOREIGN KEY `FK_00cbe87bc0d4e36758d61bd31d6`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` DROP FOREIGN KEY `FK_c9ca2f58d4517460435cbd8b4c9`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` DROP FOREIGN KEY `FK_afe9f917a1c82b9e9e69f7c6129`',
undefined,
);
await queryRunner.query(
'ALTER TABLE `country_translation` DROP FOREIGN KEY `FK_20958e5bdb4c996c18ca63d18e4`',
undefined,
);
await queryRunner.query(
"ALTER TABLE `job_record` CHANGE `settledAt` `settledAt` datetime(6) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `job_record` CHANGE `startedAt` `startedAt` datetime(6) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `job_record` CHANGE `error` `error` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `job_record` CHANGE `result` `result` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `job_record` CHANGE `data` `data` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `search_index_item` CHANGE `productVariantAssetId` `productVariantAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `search_index_item` CHANGE `productAssetId` `productAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `search_index_item` CHANGE `productVariantPreviewFocalPoint` `productVariantPreviewFocalPoint` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `search_index_item` CHANGE `productPreviewFocalPoint` `productPreviewFocalPoint` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `history_entry` CHANGE `orderId` `orderId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `history_entry` CHANGE `customerId` `customerId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `history_entry` CHANGE `administratorId` `administratorId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_3a05127e67435b4d2332ded7c9e` FOREIGN KEY (`orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`) REFERENCES `order`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_43ac602f839847fdb91101f30ec` FOREIGN KEY (`customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`) REFERENCES `customer`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `history_entry` ADD CONSTRAINT `FK_92f8c334ef06275f9586fd01832` FOREIGN KEY (`administratorId`, `administratorId`, `administratorId`, `administratorId`, `administratorId`, `administratorId`, `administratorId`, `administratorId`) REFERENCES `administrator`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `tax_rate` CHANGE `customerGroupId` `customerGroupId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `tax_rate` CHANGE `zoneId` `zoneId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `tax_rate` CHANGE `categoryId` `categoryId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_8b5ab52fc8887c1a769b9276caf` FOREIGN KEY (`customerGroupId`, `customerGroupId`, `customerGroupId`, `customerGroupId`, `customerGroupId`, `customerGroupId`, `customerGroupId`, `customerGroupId`) REFERENCES `customer_group`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_9872fc7de2f4e532fd3230d1915` FOREIGN KEY (`zoneId`, `zoneId`, `zoneId`, `zoneId`, `zoneId`, `zoneId`, `zoneId`, `zoneId`) REFERENCES `zone`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `tax_rate` ADD CONSTRAINT `FK_7ee3306d7638aa85ca90d672198` FOREIGN KEY (`categoryId`, `categoryId`, `categoryId`, `categoryId`, `categoryId`, `categoryId`, `categoryId`, `categoryId`) REFERENCES `tax_category`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `session` CHANGE `userId` `userId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `session` CHANGE `activeOrderId` `activeOrderId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `session` CHANGE `authenticationStrategy` `authenticationStrategy` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` ADD CONSTRAINT `FK_3d2f174ef04fb312fdebd0ddc53` FOREIGN KEY (`userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`) REFERENCES `user`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `session` ADD CONSTRAINT `FK_7a75399a4f4ffa48ee02e98c059` FOREIGN KEY (`activeOrderId`, `activeOrderId`, `activeOrderId`, `activeOrderId`, `activeOrderId`, `activeOrderId`, `activeOrderId`, `activeOrderId`) REFERENCES `order`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `address` CHANGE `countryId` `countryId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `address` CHANGE `customerId` `customerId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` ADD CONSTRAINT `FK_d87215343c3a3a67e6a0b7f3ea9` FOREIGN KEY (`countryId`, `countryId`, `countryId`, `countryId`, `countryId`, `countryId`, `countryId`, `countryId`) REFERENCES `country`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `address` ADD CONSTRAINT `FK_dc34d382b493ade1f70e834c4d3` FOREIGN KEY (`customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`) REFERENCES `customer`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `customer` CHANGE `userId` `userId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `customer` CHANGE `phoneNumber` `phoneNumber` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `customer` CHANGE `title` `title` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `customer` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `customer` ADD CONSTRAINT `FK_3f62b42ed23958b120c235f74df` FOREIGN KEY (`userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`) REFERENCES `user`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `order` CHANGE `customerId` `customerId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order` CHANGE `taxZoneId` `taxZoneId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order` CHANGE `shippingMethodId` `shippingMethodId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order` CHANGE `orderPlacedAt` `orderPlacedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` ADD CONSTRAINT `FK_124456e637cca7a415897dce659` FOREIGN KEY (`customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`, `customerId`) REFERENCES `customer`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order` ADD CONSTRAINT `FK_4af424d3e7b2c3cb26e075e20fc` FOREIGN KEY (`shippingMethodId`, `shippingMethodId`, `shippingMethodId`, `shippingMethodId`, `shippingMethodId`, `shippingMethodId`, `shippingMethodId`, `shippingMethodId`) REFERENCES `shipping_method`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `shipping_method` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `promotion` CHANGE `perCustomerUsageLimit` `perCustomerUsageLimit` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `promotion` CHANGE `couponCode` `couponCode` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `promotion` CHANGE `endsAt` `endsAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `promotion` CHANGE `startsAt` `startsAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `promotion` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_line` CHANGE `orderId` `orderId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_line` CHANGE `featuredAssetId` `featuredAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_line` CHANGE `taxCategoryId` `taxCategoryId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_line` CHANGE `productVariantId` `productVariantId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_239cfca2a55b98b90b6bef2e44f` FOREIGN KEY (`orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`) REFERENCES `order`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_9f065453910ea77d4be8e92618f` FOREIGN KEY (`featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`) REFERENCES `asset`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_77be94ce9ec6504466179462275` FOREIGN KEY (`taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`) REFERENCES `tax_category`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_line` ADD CONSTRAINT `FK_cbcd22193eda94668e84d33f185` FOREIGN KEY (`productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`) REFERENCES `product_variant`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_item` CHANGE `lineId` `lineId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_item` CHANGE `refundId` `refundId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `order_item` CHANGE `fulfillmentId` `fulfillmentId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_69384323444206753f0cdeb64e0` FOREIGN KEY (`lineId`, `lineId`, `lineId`, `lineId`, `lineId`, `lineId`, `lineId`, `lineId`) REFERENCES `order_line`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_3e5161133689fba526377cbccd3` FOREIGN KEY (`refundId`, `refundId`, `refundId`, `refundId`, `refundId`, `refundId`, `refundId`, `refundId`) REFERENCES `refund`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `order_item` ADD CONSTRAINT `FK_eed51be48640c21e1c76d3e9fbe` FOREIGN KEY (`fulfillmentId`, `fulfillmentId`, `fulfillmentId`, `fulfillmentId`, `fulfillmentId`, `fulfillmentId`, `fulfillmentId`, `fulfillmentId`) REFERENCES `fulfillment`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `refund` CHANGE `transactionId` `transactionId` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `refund` CHANGE `reason` `reason` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `payment` CHANGE `orderId` `orderId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `payment` CHANGE `transactionId` `transactionId` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `payment` CHANGE `errorMessage` `errorMessage` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `payment` ADD CONSTRAINT `FK_d09d285fe1645cd2f0db811e293` FOREIGN KEY (`orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`, `orderId`) REFERENCES `order`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `administrator` CHANGE `userId` `userId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `administrator` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `administrator` ADD CONSTRAINT `FK_1966e18ce6a39a82b19204704d7` FOREIGN KEY (`userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`) REFERENCES `user`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant` CHANGE `taxCategoryId` `taxCategoryId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant` CHANGE `featuredAssetId` `featuredAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant` CHANGE `productId` `productId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_e38dca0d82fd64c7cf8aac8b8ef` FOREIGN KEY (`taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`, `taxCategoryId`) REFERENCES `tax_category`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_0e6f516053cf982b537836e21cf` FOREIGN KEY (`featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`) REFERENCES `asset`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant` ADD CONSTRAINT `FK_6e420052844edf3a5506d863ce6` FOREIGN KEY (`productId`, `productId`, `productId`, `productId`, `productId`, `productId`, `productId`, `productId`) REFERENCES `product`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_translation` ADD CONSTRAINT `FK_420f4d6fb75d38b9dca79bc43b4` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `product_variant`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_variant_price` CHANGE `variantId` `variantId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_variant_price` ADD CONSTRAINT `FK_e6126cd268aea6e9b31d89af9ab` FOREIGN KEY (`variantId`, `variantId`, `variantId`, `variantId`, `variantId`, `variantId`, `variantId`, `variantId`) REFERENCES `product_variant`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `stock_movement` CHANGE `orderItemId` `orderItemId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `stock_movement` CHANGE `productVariantId` `productVariantId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` ADD CONSTRAINT `FK_cbb0990e398bf7713aebdd38482` FOREIGN KEY (`orderItemId`, `orderItemId`, `orderItemId`, `orderItemId`, `orderItemId`, `orderItemId`, `orderItemId`, `orderItemId`) REFERENCES `order_item`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `stock_movement` ADD CONSTRAINT `FK_e65ba3882557cab4febb54809bb` FOREIGN KEY (`productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`, `productVariantId`) REFERENCES `product_variant`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_option_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_translation` ADD CONSTRAINT `FK_a79a443c1f7841f3851767faa6d` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `product_option`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_option_group` CHANGE `productId` `productId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group` ADD CONSTRAINT `FK_a6e91739227bf4d442f23c52c75` FOREIGN KEY (`productId`, `productId`, `productId`, `productId`, `productId`, `productId`, `productId`, `productId`) REFERENCES `product`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_option_group_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_option_group_translation` ADD CONSTRAINT `FK_93751abc1451972c02e033b766c` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `product_option_group`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product` CHANGE `featuredAssetId` `featuredAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `product` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product` ADD CONSTRAINT `FK_91a19e6613534949a4ce6e76ff8` FOREIGN KEY (`featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`) REFERENCES `asset`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `product_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `product_translation` ADD CONSTRAINT `FK_7dbc75cb4e8b002620c4dbfdac5` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `product`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `facet_value` CHANGE `facetId` `facetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value` ADD CONSTRAINT `FK_d101dc2265a7341be3d94968c5b` FOREIGN KEY (`facetId`, `facetId`, `facetId`, `facetId`, `facetId`, `facetId`, `facetId`, `facetId`) REFERENCES `facet`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `facet_value_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_value_translation` ADD CONSTRAINT `FK_3d6e45823b65de808a66cb1423b` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `facet_value`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `facet_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `facet_translation` ADD CONSTRAINT `FK_eaea53f44bf9e97790d38a3d68f` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `facet`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `collection` CHANGE `parentId` `parentId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `collection` CHANGE `featuredAssetId` `featuredAssetId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` ADD CONSTRAINT `FK_4257b61275144db89fa0f5dc059` FOREIGN KEY (`parentId`, `parentId`, `parentId`, `parentId`, `parentId`, `parentId`, `parentId`, `parentId`) REFERENCES `collection`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection` ADD CONSTRAINT `FK_7256fef1bb42f1b38156b7449f5` FOREIGN KEY (`featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`, `featuredAssetId`) REFERENCES `asset`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE SET NULL ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `collection_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `collection_translation` ADD CONSTRAINT `FK_e329f9036210d75caa1d8f2154a` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `collection`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `asset` CHANGE `focalPoint` `focalPoint` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `userId` `userId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `metadata` `metadata` text NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `externalIdentifier` `externalIdentifier` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `strategy` `strategy` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `pendingIdentifier` `pendingIdentifier` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `identifierChangeToken` `identifierChangeToken` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `passwordResetToken` `passwordResetToken` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `verificationToken` `verificationToken` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `passwordHash` `passwordHash` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `authentication_method` CHANGE `identifier` `identifier` varchar(255) NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `authentication_method` ADD CONSTRAINT `FK_00cbe87bc0d4e36758d61bd31d6` FOREIGN KEY (`userId`, `userId`, `userId`, `userId`, `userId`, `userId`, `userId`) REFERENCES `user`(`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `user` CHANGE `lastLogin` `lastLogin` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `user` CHANGE `deletedAt` `deletedAt` datetime NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `channel` CHANGE `defaultShippingZoneId` `defaultShippingZoneId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
"ALTER TABLE `channel` CHANGE `defaultTaxZoneId` `defaultTaxZoneId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` ADD CONSTRAINT `FK_c9ca2f58d4517460435cbd8b4c9` FOREIGN KEY (`defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`, `defaultShippingZoneId`) REFERENCES `zone`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
'ALTER TABLE `channel` ADD CONSTRAINT `FK_afe9f917a1c82b9e9e69f7c6129` FOREIGN KEY (`defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`, `defaultTaxZoneId`) REFERENCES `zone`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
undefined,
);
await queryRunner.query(
"ALTER TABLE `country_translation` CHANGE `baseId` `baseId` int NULL DEFAULT 'NULL'",
undefined,
);
await queryRunner.query(
'ALTER TABLE `country_translation` ADD CONSTRAINT `FK_20958e5bdb4c996c18ca63d18e4` FOREIGN KEY (`baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`, `baseId`) REFERENCES `country`(`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`,`id`) ON DELETE CASCADE ON UPDATE NO ACTION',
undefined,
);
}
} Postgresimport { MigrationInterface, QueryRunner } from 'typeorm';
export class postgres1598601015234 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_6fb55742e13e8082954d0436dc"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_d8791f444a8bf23fe4c1bc020c"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_9a5a6a556f75c4ac7bfdd03410"`, undefined);
await queryRunner.query(
`CREATE INDEX "IDX_6fb55742e13e8082954d0436dc" ON "search_index_item" ("productName") `,
undefined,
);
await queryRunner.query(
`CREATE INDEX "IDX_d8791f444a8bf23fe4c1bc020c" ON "search_index_item" ("productVariantName") `,
undefined,
);
await queryRunner.query(
`CREATE INDEX "IDX_9a5a6a556f75c4ac7bfdd03410" ON "search_index_item" ("description") `,
undefined,
);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_9a5a6a556f75c4ac7bfdd03410"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_d8791f444a8bf23fe4c1bc020c"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_6fb55742e13e8082954d0436dc"`, undefined);
await queryRunner.query(
`CREATE INDEX "IDX_9a5a6a556f75c4ac7bfdd03410" ON "search_index_item" ("description") `,
undefined,
);
await queryRunner.query(
`CREATE INDEX "IDX_d8791f444a8bf23fe4c1bc020c" ON "search_index_item" ("productVariantName") `,
undefined,
);
await queryRunner.query(
`CREATE INDEX "IDX_6fb55742e13e8082954d0436dc" ON "search_index_item" ("productName") `,
undefined,
);
}
} SQLiteimport {MigrationInterface, QueryRunner} from "typeorm";
export class sqlite1598601222394 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_9a5a6a556f75c4ac7bfdd03410"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_d8791f444a8bf23fe4c1bc020c"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_6fb55742e13e8082954d0436dc"`, undefined);
await queryRunner.query(`CREATE TABLE "temporary_order_item" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "unitPrice" integer NOT NULL, "unitPriceIncludesTax" boolean NOT NULL, "taxRate" decimal(5,2) NOT NULL, "pendingAdjustments" text NOT NULL, "cancelled" boolean NOT NULL DEFAULT (0), "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fulfillmentId" integer, "refundId" integer, "lineId" integer, CONSTRAINT "FK_3e5161133689fba526377cbccd3" FOREIGN KEY ("refundId") REFERENCES "refund" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_eed51be48640c21e1c76d3e9fbe" FOREIGN KEY ("fulfillmentId") REFERENCES "fulfillment" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_69384323444206753f0cdeb64e0" FOREIGN KEY ("lineId") REFERENCES "order_line" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "temporary_order_item"("createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId") SELECT "createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId" FROM "order_item"`, undefined);
await queryRunner.query(`DROP TABLE "order_item"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_order_item" RENAME TO "order_item"`, undefined);
await queryRunner.query(`CREATE TABLE "temporary_tax_rate" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "name" varchar NOT NULL, "enabled" boolean NOT NULL, "value" decimal(5,2) NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "categoryId" integer, "zoneId" integer, "customerGroupId" integer, CONSTRAINT "FK_8b5ab52fc8887c1a769b9276caf" FOREIGN KEY ("customerGroupId") REFERENCES "customer_group" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_9872fc7de2f4e532fd3230d1915" FOREIGN KEY ("zoneId") REFERENCES "zone" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7ee3306d7638aa85ca90d672198" FOREIGN KEY ("categoryId") REFERENCES "tax_category" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "temporary_tax_rate"("createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId") SELECT "createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId" FROM "tax_rate"`, undefined);
await queryRunner.query(`DROP TABLE "tax_rate"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_tax_rate" RENAME TO "tax_rate"`, undefined);
await queryRunner.query(`CREATE TABLE "temporary_order_item" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "unitPrice" integer NOT NULL, "unitPriceIncludesTax" boolean NOT NULL, "taxRate" decimal(5,2) NOT NULL, "pendingAdjustments" text NOT NULL, "cancelled" boolean NOT NULL DEFAULT (0), "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fulfillmentId" integer, "refundId" integer, "lineId" integer, CONSTRAINT "FK_3e5161133689fba526377cbccd3" FOREIGN KEY ("refundId") REFERENCES "refund" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_eed51be48640c21e1c76d3e9fbe" FOREIGN KEY ("fulfillmentId") REFERENCES "fulfillment" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_69384323444206753f0cdeb64e0" FOREIGN KEY ("lineId") REFERENCES "order_line" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "temporary_order_item"("createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId") SELECT "createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId" FROM "order_item"`, undefined);
await queryRunner.query(`DROP TABLE "order_item"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_order_item" RENAME TO "order_item"`, undefined);
await queryRunner.query(`CREATE TABLE "temporary_tax_rate" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "name" varchar NOT NULL, "enabled" boolean NOT NULL, "value" decimal(5,2) NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "categoryId" integer, "zoneId" integer, "customerGroupId" integer, CONSTRAINT "FK_8b5ab52fc8887c1a769b9276caf" FOREIGN KEY ("customerGroupId") REFERENCES "customer_group" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_9872fc7de2f4e532fd3230d1915" FOREIGN KEY ("zoneId") REFERENCES "zone" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7ee3306d7638aa85ca90d672198" FOREIGN KEY ("categoryId") REFERENCES "tax_category" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "temporary_tax_rate"("createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId") SELECT "createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId" FROM "tax_rate"`, undefined);
await queryRunner.query(`DROP TABLE "tax_rate"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_tax_rate" RENAME TO "tax_rate"`, undefined);
await queryRunner.query(`CREATE TABLE "temporary_job_record" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "queueName" varchar NOT NULL, "data" text, "state" varchar NOT NULL, "progress" integer NOT NULL, "result" text, "error" varchar, "startedAt" datetime(6), "settledAt" datetime(6), "isSettled" boolean NOT NULL, "retries" integer NOT NULL, "attempts" integer NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL)`, undefined);
await queryRunner.query(`INSERT INTO "temporary_job_record"("createdAt", "updatedAt", "queueName", "data", "state", "progress", "result", "error", "startedAt", "settledAt", "isSettled", "retries", "attempts", "id") SELECT "createdAt", "updatedAt", "queueName", "data", "state", "progress", "result", "error", "startedAt", "settledAt", "isSettled", "retries", "attempts", "id" FROM "job_record"`, undefined);
await queryRunner.query(`DROP TABLE "job_record"`, undefined);
await queryRunner.query(`ALTER TABLE "temporary_job_record" RENAME TO "job_record"`, undefined);
await queryRunner.query(`CREATE INDEX "IDX_6fb55742e13e8082954d0436dc" ON "search_index_item" ("productName") `, undefined);
await queryRunner.query(`CREATE INDEX "IDX_d8791f444a8bf23fe4c1bc020c" ON "search_index_item" ("productVariantName") `, undefined);
await queryRunner.query(`CREATE INDEX "IDX_9a5a6a556f75c4ac7bfdd03410" ON "search_index_item" ("description") `, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_9a5a6a556f75c4ac7bfdd03410"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_d8791f444a8bf23fe4c1bc020c"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_6fb55742e13e8082954d0436dc"`, undefined);
await queryRunner.query(`ALTER TABLE "job_record" RENAME TO "temporary_job_record"`, undefined);
await queryRunner.query(`CREATE TABLE "job_record" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "queueName" varchar NOT NULL, "data" text, "state" varchar NOT NULL, "progress" integer NOT NULL, "result" text, "error" varchar, "startedAt" datetime(6), "settledAt" datetime(6), "isSettled" boolean NOT NULL, "retries" integer NOT NULL, "attempts" integer NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL)`, undefined);
await queryRunner.query(`INSERT INTO "job_record"("createdAt", "updatedAt", "queueName", "data", "state", "progress", "result", "error", "startedAt", "settledAt", "isSettled", "retries", "attempts", "id") SELECT "createdAt", "updatedAt", "queueName", "data", "state", "progress", "result", "error", "startedAt", "settledAt", "isSettled", "retries", "attempts", "id" FROM "temporary_job_record"`, undefined);
await queryRunner.query(`DROP TABLE "temporary_job_record"`, undefined);
await queryRunner.query(`ALTER TABLE "tax_rate" RENAME TO "temporary_tax_rate"`, undefined);
await queryRunner.query(`CREATE TABLE "tax_rate" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "name" varchar NOT NULL, "enabled" boolean NOT NULL, "value" decimal(5,2) NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "categoryId" integer, "zoneId" integer, "customerGroupId" integer, CONSTRAINT "FK_8b5ab52fc8887c1a769b9276caf" FOREIGN KEY ("customerGroupId") REFERENCES "customer_group" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_9872fc7de2f4e532fd3230d1915" FOREIGN KEY ("zoneId") REFERENCES "zone" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7ee3306d7638aa85ca90d672198" FOREIGN KEY ("categoryId") REFERENCES "tax_category" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "tax_rate"("createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId") SELECT "createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId" FROM "temporary_tax_rate"`, undefined);
await queryRunner.query(`DROP TABLE "temporary_tax_rate"`, undefined);
await queryRunner.query(`ALTER TABLE "order_item" RENAME TO "temporary_order_item"`, undefined);
await queryRunner.query(`CREATE TABLE "order_item" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "unitPrice" integer NOT NULL, "unitPriceIncludesTax" boolean NOT NULL, "taxRate" decimal(5,2) NOT NULL, "pendingAdjustments" text NOT NULL, "cancelled" boolean NOT NULL DEFAULT (0), "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fulfillmentId" integer, "refundId" integer, "lineId" integer, CONSTRAINT "FK_3e5161133689fba526377cbccd3" FOREIGN KEY ("refundId") REFERENCES "refund" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_eed51be48640c21e1c76d3e9fbe" FOREIGN KEY ("fulfillmentId") REFERENCES "fulfillment" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_69384323444206753f0cdeb64e0" FOREIGN KEY ("lineId") REFERENCES "order_line" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "order_item"("createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId") SELECT "createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId" FROM "temporary_order_item"`, undefined);
await queryRunner.query(`DROP TABLE "temporary_order_item"`, undefined);
await queryRunner.query(`ALTER TABLE "tax_rate" RENAME TO "temporary_tax_rate"`, undefined);
await queryRunner.query(`CREATE TABLE "tax_rate" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "name" varchar NOT NULL, "enabled" boolean NOT NULL, "value" decimal(5,2) NOT NULL, "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "categoryId" integer, "zoneId" integer, "customerGroupId" integer, CONSTRAINT "FK_8b5ab52fc8887c1a769b9276caf" FOREIGN KEY ("customerGroupId") REFERENCES "customer_group" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_9872fc7de2f4e532fd3230d1915" FOREIGN KEY ("zoneId") REFERENCES "zone" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7ee3306d7638aa85ca90d672198" FOREIGN KEY ("categoryId") REFERENCES "tax_category" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "tax_rate"("createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId") SELECT "createdAt", "updatedAt", "name", "enabled", "value", "id", "categoryId", "zoneId", "customerGroupId" FROM "temporary_tax_rate"`, undefined);
await queryRunner.query(`DROP TABLE "temporary_tax_rate"`, undefined);
await queryRunner.query(`ALTER TABLE "order_item" RENAME TO "temporary_order_item"`, undefined);
await queryRunner.query(`CREATE TABLE "order_item" ("createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "unitPrice" integer NOT NULL, "unitPriceIncludesTax" boolean NOT NULL, "taxRate" decimal(5,2) NOT NULL, "pendingAdjustments" text NOT NULL, "cancelled" boolean NOT NULL DEFAULT (0), "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fulfillmentId" integer, "refundId" integer, "lineId" integer, CONSTRAINT "FK_3e5161133689fba526377cbccd3" FOREIGN KEY ("refundId") REFERENCES "refund" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_eed51be48640c21e1c76d3e9fbe" FOREIGN KEY ("fulfillmentId") REFERENCES "fulfillment" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_69384323444206753f0cdeb64e0" FOREIGN KEY ("lineId") REFERENCES "order_line" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`, undefined);
await queryRunner.query(`INSERT INTO "order_item"("createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId") SELECT "createdAt", "updatedAt", "unitPrice", "unitPriceIncludesTax", "taxRate", "pendingAdjustments", "cancelled", "id", "fulfillmentId", "refundId", "lineId" FROM "temporary_order_item"`, undefined);
await queryRunner.query(`DROP TABLE "temporary_order_item"`, undefined);
await queryRunner.query(`CREATE INDEX "IDX_6fb55742e13e8082954d0436dc" ON "search_index_item" ("productName") `, undefined);
await queryRunner.query(`CREATE INDEX "IDX_d8791f444a8bf23fe4c1bc020c" ON "search_index_item" ("productVariantName") `, undefined);
await queryRunner.query(`CREATE INDEX "IDX_9a5a6a556f75c4ac7bfdd03410" ON "search_index_item" ("description") `, undefined);
}
} MySQL is by far the worst here. Issues include:
Postgres seems to only suffer from one issue:
SQLite is doing something strange, creating temporary tables and copying existing data to them and then renaming. Perhaps this is a work-around for a limitation of SQLite. |
Update: MySQL/MariaDBMassive breakthrough! I discovered that all the issues with the MySQL migration are caused by setting the driver to |
We've been using |
Got 2 PRs in to TypeORM for a MariaDB issue (typeorm/typeorm#6632) and Postgres (typeorm/typeorm#6634) @AleFons I'm going to look into sqlite next... |
Here's the PR for the SQLite issue: typeorm/typeorm#6638 |
We can close this now, because all 3 of my PRs are now merged into TypeORM 🥳 |
this was a life saver |
Problem
Vendure uses TypeORM to manage database access, schema creation and schema migration.
Overall TypeORM is great but currently the biggest pain point is migrations - there are numerous issues which cause TypeORM to generate unnecessary queries when generating migrations. Here is a collection of such issues currently open on the TypeORM repo:
Broadly, most of the issues fall into the following categories:
Cause
In the file RdbmsSchemaBuilder.ts the algorithm for building a schema is given as:
The root cause is that the logic for establishing the equality of foreign keys, indices and columns is faulty in some cases.
Each DB type has a corresponding QueryRunner implementation, e.g. MysqlQueryRunner, PostgresQueryRunner. Each QueryRunner implements a
loadTables()
method, which returns aTable
object containing metadata on columns, indices, foreign keys etc.This
Table
object is then used in theRdbmsSchemaBuilder.executeSchemaSyncOperationsInProperOrder()
method:If we take, for example, the
dropOldForeignKeys()
method, we then see this logic which compares foreign keys defined in the TypeORM decorators metadata vs those extracted from the DB tables:So for example, I found that a relation defined as
would lead to the "foreign key dropped & re-created on every migration" issue. Digging in, I traced it to the line which compares
metadataFK.onDelete !== tableForeignKey.onDelete
. TheMysqlQueryRunner
was returning theonDelete
value asNO ACTION
rather thanSET NULL
, causing TypeORM to think it is different and needs to be dropped.The specific reasons for the error varies between each DB QueryRunner implementation, so it looks like each issue needs to be tested against each DB type as they will not all exist uniformly across DB types.
Solution
I've spent some time digging in to this and there seems to be no single fix for all of them - each one would require some investigation into the DB-specific
QueryRunner.loadTables()
implementation.Unfortunately I am no SQL / DB expert and diving in to this now would take me away from more pressing Vendure issues that need attention.
First step: tests
I propose that, as a first step, a series of tests be created for TypeORM which demonstrate the various migration issues. For example, here is a test which will fail due to the foreign key issue described above:
https://gist.github.com/michaelbromley/99eecfe6d7efbc2fbb37f7cbec7b84b2
Once there is a suite of tests which fail on these issues, then work can start on fixing them. I am hoping community members with deeper knowledge of the RDBMSs involved can step in and help on these.
The text was updated successfully, but these errors were encountered: