Quote column names in indexes (#13938)

* quote column names in indexes

* quote column names in created indexes

* fix tests
This commit is contained in:
Pedro Guzman
2025-11-03 10:58:40 +01:00
committed by GitHub
parent 37563987b8
commit e66f7cf59e
4 changed files with 44 additions and 31 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/utils": patch
---
quote column names in created indexes

View File

@@ -37,7 +37,7 @@ describe("createPsqlIndexStatementHelper", function () {
expect(indexStatement.expression).toEqual( expect(indexStatement.expression).toEqual(
`CREATE INDEX IF NOT EXISTS "${options.name}" ON "${ `CREATE INDEX IF NOT EXISTS "${options.name}" ON "${
options.tableName options.tableName
}" (${options.columns.join(", ")})` }" (${options.columns.map((column) => `"${column}"`).join(", ")})`
) )
}) })
@@ -53,7 +53,9 @@ describe("createPsqlIndexStatementHelper", function () {
expect(indexStatement.expression).toEqual( expect(indexStatement.expression).toEqual(
`CREATE INDEX IF NOT EXISTS "${options.name}" ON "${ `CREATE INDEX IF NOT EXISTS "${options.name}" ON "${
options.tableName options.tableName
}" (${options.columns.join(", ")}) WHERE ${options.where}` }" (${options.columns.map((column) => `"${column}"`).join(", ")}) WHERE ${
options.where
}`
) )
}) })
@@ -70,7 +72,9 @@ describe("createPsqlIndexStatementHelper", function () {
expect(indexStatement.toString()).toEqual( expect(indexStatement.toString()).toEqual(
`CREATE INDEX IF NOT EXISTS "${options.name}" ON "${ `CREATE INDEX IF NOT EXISTS "${options.name}" ON "${
options.tableName options.tableName
}" USING GIN (${options.columns.join(", ")}) WHERE ${options.where}` }" USING GIN (${options.columns
.map((column) => `"${column}"`)
.join(", ")}) WHERE ${options.where}`
) )
}) })
@@ -86,7 +90,9 @@ describe("createPsqlIndexStatementHelper", function () {
expect(indexStatement.expression).toEqual( expect(indexStatement.expression).toEqual(
`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_table_name_column_name_1_column_name_2_unique" ON "${ `CREATE UNIQUE INDEX IF NOT EXISTS "IDX_table_name_column_name_1_column_name_2_unique" ON "${
options.tableName options.tableName
}" (${options.columns.join(", ")}) WHERE ${options.where}` }" (${options.columns.map((column) => `"${column}"`).join(", ")}) WHERE ${
options.where
}`
) )
}) })

View File

@@ -60,7 +60,9 @@ export function createPsqlIndexStatementHelper({
tableReference = `"${tableName}"` tableReference = `"${tableName}"`
} }
columns = Array.isArray(columns) ? columns.join(", ") : columns columns = Array.isArray(columns)
? columns.map((column) => `"${column}"`).join(", ")
: columns
name = name || `IDX_${tableName}_${columnsName}${unique ? "_unique" : ""}` name = name || `IDX_${tableName}_${columnsName}${unique ? "_unique" : ""}`
const typeStr = type ? ` USING ${type}` : "" const typeStr = type ? ` USING ${type}` : ""

View File

@@ -2109,16 +2109,16 @@ describe("Entity builder", () => {
{ {
name: "IDX_user_id", name: "IDX_user_id",
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "user" (id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "user" ("id") WHERE deleted_at IS NULL',
}, },
{ {
name: "IDX_user_email_unique", name: "IDX_user_email_unique",
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_unique" ON "user" (email) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_unique" ON "user" ("email") WHERE deleted_at IS NULL',
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
]) ])
@@ -2229,16 +2229,16 @@ describe("Entity builder", () => {
{ {
name: "IDX_user_id", name: "IDX_user_id",
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "platform"."user" (id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "platform"."user" ("id") WHERE deleted_at IS NULL',
}, },
{ {
name: "IDX_user_email_unique", name: "IDX_user_email_unique",
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_unique" ON "platform"."user" (email) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_unique" ON "platform"."user" ("email") WHERE deleted_at IS NULL',
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "platform"."user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "platform"."user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
]) ])
@@ -2348,16 +2348,16 @@ describe("Entity builder", () => {
{ {
name: "IDX_user_id", name: "IDX_user_id",
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "user" (id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_id" ON "user" ("id") WHERE deleted_at IS NULL',
}, },
{ {
name: "IDX_user_myEmail_unique", name: "IDX_user_myEmail_unique",
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_myEmail_unique" ON "user" (myEmail) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_myEmail_unique" ON "user" ("myEmail") WHERE deleted_at IS NULL',
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
]) ])
@@ -3945,32 +3945,32 @@ describe("Entity builder", () => {
expect(metaData.indexes).toEqual([ expect(metaData.indexes).toEqual([
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" (group_id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" ("group_id") WHERE deleted_at IS NULL',
name: "IDX_user_group_id", name: "IDX_user_group_id",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
{ {
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_account_unique" ON "user" (email, account) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_account_unique" ON "user" ("email", "account") WHERE deleted_at IS NULL',
name: "IDX_user_email_account_unique", name: "IDX_user_email_account_unique",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_email_account" ON "user" (email, account) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_email_account" ON "user" ("email", "account") WHERE deleted_at IS NULL',
name: "IDX_user_email_account", name: "IDX_user_email_account",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_organization_account" ON "user" (organization, account) WHERE email IS NOT NULL AND deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_organization_account" ON "user" ("organization", "account") WHERE email IS NOT NULL AND deleted_at IS NULL',
name: "IDX_user_organization_account", name: "IDX_user_organization_account",
}, },
{ {
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_unique-name" ON "user" (organization, account, group_id) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_unique-name" ON "user" ("organization", "account", "group_id") WHERE deleted_at IS NULL',
name: "IDX_unique-name", name: "IDX_unique-name",
}, },
]) ])
@@ -4026,37 +4026,37 @@ describe("Entity builder", () => {
expect(metaData.indexes).toEqual([ expect(metaData.indexes).toEqual([
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" (group_id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" ("group_id") WHERE deleted_at IS NULL',
name: "IDX_user_group_id", name: "IDX_user_group_id",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_organization_account" ON "user" (organization, account) WHERE email IS NOT NULL AND deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_organization_account" ON "user" ("organization", "account") WHERE email IS NOT NULL AND deleted_at IS NULL',
name: "IDX_user_organization_account", name: "IDX_user_organization_account",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX-email-account-special" ON "user" (organization, account) WHERE email IS NOT NULL AND account IS NULL AND deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX-email-account-special" ON "user" ("organization", "account") WHERE email IS NOT NULL AND account IS NULL AND deleted_at IS NULL',
name: "IDX-email-account-special", name: "IDX-email-account-special",
}, },
{ {
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_unique-name" ON "user" (organization, account, group_id) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_unique-name" ON "user" ("organization", "account", "group_id") WHERE deleted_at IS NULL',
name: "IDX_unique-name", name: "IDX_unique-name",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_organization_group_id" ON "user" (organization, group_id) WHERE is_owner IS FALSE AND deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_organization_group_id" ON "user" ("organization", "group_id") WHERE is_owner IS FALSE AND deleted_at IS NULL',
name: "IDX_user_organization_group_id", name: "IDX_user_organization_group_id",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_account_group_id" ON "user" (account, group_id) WHERE is_owner IS TRUE AND deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_account_group_id" ON "user" ("account", "group_id") WHERE is_owner IS TRUE AND deleted_at IS NULL',
name: "IDX_user_account_group_id", name: "IDX_user_account_group_id",
}, },
]) ])
@@ -4122,12 +4122,12 @@ describe("Entity builder", () => {
expect(metaData.indexes).toEqual([ expect(metaData.indexes).toEqual([
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" (group_id) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_group_id" ON "user" ("group_id") WHERE deleted_at IS NULL',
name: "IDX_user_group_id", name: "IDX_user_group_id",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_user_deleted_at", name: "IDX_user_deleted_at",
}, },
]) ])
@@ -4138,12 +4138,12 @@ describe("Entity builder", () => {
expect(settingMetadata.indexes).toEqual([ expect(settingMetadata.indexes).toEqual([
{ {
expression: expression:
'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_setting_user_id_unique" ON "setting" (user_id) WHERE deleted_at IS NULL', 'CREATE UNIQUE INDEX IF NOT EXISTS "IDX_setting_user_id_unique" ON "setting" ("user_id") WHERE deleted_at IS NULL',
name: "IDX_setting_user_id_unique", name: "IDX_setting_user_id_unique",
}, },
{ {
expression: expression:
'CREATE INDEX IF NOT EXISTS "IDX_setting_deleted_at" ON "setting" (deleted_at) WHERE deleted_at IS NULL', 'CREATE INDEX IF NOT EXISTS "IDX_setting_deleted_at" ON "setting" ("deleted_at") WHERE deleted_at IS NULL',
name: "IDX_setting_deleted_at", name: "IDX_setting_deleted_at",
}, },
]) ])