From 6015dcc16d6d9af15575bee98fb5727c6a6d9fd2 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Fri, 11 Apr 2025 10:18:58 +0200 Subject: [PATCH] chore(product): Missing index in migration (#12150) * chore(product): Missing index in migration * Create silent-parrots-tickle.md --- .changeset/silent-parrots-tickle.md | 5 ++ .../migrations/.snapshot-medusa-product.json | 80 ++++++++++++++++--- .../src/migrations/Migration20250411073236.ts | 13 +++ 3 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 .changeset/silent-parrots-tickle.md create mode 100644 packages/modules/product/src/migrations/Migration20250411073236.ts diff --git a/.changeset/silent-parrots-tickle.md b/.changeset/silent-parrots-tickle.md new file mode 100644 index 0000000000..e47778c2d2 --- /dev/null +++ b/.changeset/silent-parrots-tickle.md @@ -0,0 +1,5 @@ +--- +"@medusajs/product": patch +--- + +chore(product): Missing index in migration diff --git a/packages/modules/product/src/migrations/.snapshot-medusa-product.json b/packages/modules/product/src/migrations/.snapshot-medusa-product.json index 15cd6347d0..5fa50e656d 100644 --- a/packages/modules/product/src/migrations/.snapshot-medusa-product.json +++ b/packages/modules/product/src/migrations/.snapshot-medusa-product.json @@ -140,6 +140,7 @@ "keyName": "IDX_product_category_parent_category_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_category_parent_category_id\" ON \"product_category\" (parent_category_id) WHERE deleted_at IS NULL" @@ -148,6 +149,7 @@ "keyName": "IDX_product_category_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_category_deleted_at\" ON \"product_category\" (deleted_at) WHERE deleted_at IS NULL" @@ -156,6 +158,7 @@ "keyName": "IDX_product_category_path", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_category_path\" ON \"product_category\" (mpath) WHERE deleted_at IS NULL" @@ -164,6 +167,7 @@ "keyName": "IDX_category_handle_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_category_handle_unique\" ON \"product_category\" (handle) WHERE deleted_at IS NULL" @@ -174,6 +178,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -193,7 +198,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -273,6 +279,7 @@ "keyName": "IDX_product_collection_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_collection_deleted_at\" ON \"product_collection\" (deleted_at) WHERE deleted_at IS NULL" @@ -281,6 +288,7 @@ "keyName": "IDX_collection_handle_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_collection_handle_unique\" ON \"product_collection\" (handle) WHERE deleted_at IS NULL" @@ -291,12 +299,14 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } ], "checks": [], - "foreignKeys": {} + "foreignKeys": {}, + "nativeEnums": {} }, { "columns": { @@ -367,6 +377,7 @@ "keyName": "IDX_product_tag_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_tag_deleted_at\" ON \"product_tag\" (deleted_at) WHERE deleted_at IS NULL" @@ -375,6 +386,7 @@ "keyName": "IDX_tag_value_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_tag_value_unique\" ON \"product_tag\" (value) WHERE deleted_at IS NULL" @@ -385,12 +397,14 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } ], "checks": [], - "foreignKeys": {} + "foreignKeys": {}, + "nativeEnums": {} }, { "columns": { @@ -461,6 +475,7 @@ "keyName": "IDX_product_type_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_type_deleted_at\" ON \"product_type\" (deleted_at) WHERE deleted_at IS NULL" @@ -469,6 +484,7 @@ "keyName": "IDX_type_value_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_type_value_unique\" ON \"product_type\" (value) WHERE deleted_at IS NULL" @@ -479,12 +495,14 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } ], "checks": [], - "foreignKeys": {} + "foreignKeys": {}, + "nativeEnums": {} }, { "columns": { @@ -726,6 +744,7 @@ "keyName": "IDX_product_type_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_type_id\" ON \"product\" (type_id) WHERE deleted_at IS NULL" @@ -734,6 +753,7 @@ "keyName": "IDX_product_collection_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_collection_id\" ON \"product\" (collection_id) WHERE deleted_at IS NULL" @@ -742,6 +762,7 @@ "keyName": "IDX_product_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_deleted_at\" ON \"product\" (deleted_at) WHERE deleted_at IS NULL" @@ -750,6 +771,7 @@ "keyName": "IDX_product_handle_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_product_handle_unique\" ON \"product\" (handle) WHERE deleted_at IS NULL" @@ -760,6 +782,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -792,7 +815,8 @@ "deleteRule": "set null", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -872,6 +896,7 @@ "keyName": "IDX_product_option_product_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_option_product_id\" ON \"product_option\" (product_id) WHERE deleted_at IS NULL" @@ -880,6 +905,7 @@ "keyName": "IDX_product_option_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_option_deleted_at\" ON \"product_option\" (deleted_at) WHERE deleted_at IS NULL" @@ -888,6 +914,7 @@ "keyName": "IDX_option_product_id_title_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_option_product_id_title_unique\" ON \"product_option\" (product_id, title) WHERE deleted_at IS NULL" @@ -898,6 +925,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -917,7 +945,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -997,6 +1026,7 @@ "keyName": "IDX_product_option_value_option_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_option_value_option_id\" ON \"product_option_value\" (option_id) WHERE deleted_at IS NULL" @@ -1005,6 +1035,7 @@ "keyName": "IDX_product_option_value_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_option_value_deleted_at\" ON \"product_option_value\" (deleted_at) WHERE deleted_at IS NULL" @@ -1013,6 +1044,7 @@ "keyName": "IDX_option_value_option_id_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_option_value_option_id_unique\" ON \"product_option_value\" (option_id, value) WHERE deleted_at IS NULL" @@ -1023,6 +1055,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -1042,7 +1075,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -1132,6 +1166,7 @@ "keyName": "IDX_image_product_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_image_product_id\" ON \"image\" (product_id) WHERE deleted_at IS NULL" @@ -1140,6 +1175,7 @@ "keyName": "IDX_image_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_image_deleted_at\" ON \"image\" (deleted_at) WHERE deleted_at IS NULL" @@ -1148,6 +1184,7 @@ "keyName": "IDX_product_image_url", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_image_url\" ON \"image\" (url) WHERE deleted_at IS NULL" @@ -1158,6 +1195,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -1177,7 +1215,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -1210,6 +1249,7 @@ "product_tag_id" ], "composite": true, + "constraint": true, "primary": true, "unique": true } @@ -1242,7 +1282,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -1275,6 +1316,7 @@ "product_category_id" ], "composite": true, + "constraint": true, "primary": true, "unique": true } @@ -1307,7 +1349,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -1525,6 +1568,7 @@ "keyName": "IDX_product_variant_product_id", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_variant_product_id\" ON \"product_variant\" (product_id) WHERE deleted_at IS NULL" @@ -1533,6 +1577,7 @@ "keyName": "IDX_product_variant_deleted_at", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_product_variant_deleted_at\" ON \"product_variant\" (deleted_at) WHERE deleted_at IS NULL" @@ -1541,6 +1586,7 @@ "keyName": "IDX_product_variant_sku_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_product_variant_sku_unique\" ON \"product_variant\" (sku) WHERE deleted_at IS NULL" @@ -1549,6 +1595,7 @@ "keyName": "IDX_product_variant_barcode_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_product_variant_barcode_unique\" ON \"product_variant\" (barcode) WHERE deleted_at IS NULL" @@ -1557,6 +1604,7 @@ "keyName": "IDX_product_variant_ean_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_product_variant_ean_unique\" ON \"product_variant\" (ean) WHERE deleted_at IS NULL" @@ -1565,6 +1613,7 @@ "keyName": "IDX_product_variant_upc_unique", "columnNames": [], "composite": false, + "constraint": false, "primary": false, "unique": false, "expression": "CREATE UNIQUE INDEX IF NOT EXISTS \"IDX_product_variant_upc_unique\" ON \"product_variant\" (upc) WHERE deleted_at IS NULL" @@ -1575,6 +1624,7 @@ "id" ], "composite": false, + "constraint": true, "primary": true, "unique": true } @@ -1594,7 +1644,8 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} }, { "columns": { @@ -1627,6 +1678,7 @@ "option_value_id" ], "composite": true, + "constraint": true, "primary": true, "unique": true } @@ -1659,7 +1711,9 @@ "deleteRule": "cascade", "updateRule": "cascade" } - } + }, + "nativeEnums": {} } - ] + ], + "nativeEnums": {} } diff --git a/packages/modules/product/src/migrations/Migration20250411073236.ts b/packages/modules/product/src/migrations/Migration20250411073236.ts new file mode 100644 index 0000000000..cadc58b84e --- /dev/null +++ b/packages/modules/product/src/migrations/Migration20250411073236.ts @@ -0,0 +1,13 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20250411073236 extends Migration { + + override async up(): Promise { + this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_image_product_id" ON "image" (product_id) WHERE deleted_at IS NULL;`); + } + + override async down(): Promise { + this.addSql(`drop index if exists "IDX_image_product_id";`); + } + +}