From a992a2da75ff3749f00c392ec3ce700b2d8535b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Mon, 31 May 2021 19:14:09 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=90=9B=F0=9F=90=98=20Fix=20escaping?= =?UTF-8?q?=20workflow=20name=20dedup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1620826335440-UniqueWorkflowNames.ts | 20 +++++++++--------- .../1620824779533-UniqueWorkflowNames.ts | 21 +++++++++---------- .../1620821879465-UniqueWorkflowNames.ts | 20 +++++++++--------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/packages/cli/src/databases/mysqldb/migrations/1620826335440-UniqueWorkflowNames.ts b/packages/cli/src/databases/mysqldb/migrations/1620826335440-UniqueWorkflowNames.ts index defe831fd3..3dcf379028 100644 --- a/packages/cli/src/databases/mysqldb/migrations/1620826335440-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/mysqldb/migrations/1620826335440-UniqueWorkflowNames.ts @@ -13,27 +13,27 @@ export class UniqueWorkflowNames1620826335440 implements MigrationInterface { `); for (const { name } of workflowNames) { - - const duplicates = await queryRunner.query(` + const [duplicatesQuery, parameters] = queryRunner.connection.driver.escapeQueryWithParameters(` SELECT id, name FROM ${tablePrefix}workflow_entity - WHERE name = '${name}' + WHERE name = :name ORDER BY createdAt ASC - `); + `, { name }, {}); + + const duplicates = await queryRunner.query(duplicatesQuery, parameters); if (duplicates.length > 1) { - await Promise.all(duplicates.map(({ id, name }: { id: number; name: string; }, index: number) => { if (index === 0) return Promise.resolve(); - return queryRunner.query(` + const [updateQuery, updateParams] = queryRunner.connection.driver.escapeQueryWithParameters(` UPDATE ${tablePrefix}workflow_entity - SET name = '${name} ${index + 1}' + SET name = :name WHERE id = '${id}' - `); + `, { name: `${name} ${index + 1}`}, {}); + + return queryRunner.query(updateQuery, updateParams); })); - } - } await queryRunner.query('ALTER TABLE `' + tablePrefix + 'workflow_entity` ADD UNIQUE INDEX `IDX_' + tablePrefix + '943d8f922be094eb507cb9a7f9` (`name`)'); diff --git a/packages/cli/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.ts b/packages/cli/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.ts index 8c12e24003..ab6adb2995 100644 --- a/packages/cli/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.ts @@ -12,34 +12,33 @@ export class UniqueWorkflowNames1620824779533 implements MigrationInterface { tablePrefix = schema + '.' + tablePrefix; } - const workflowNames = await queryRunner.query(` SELECT name FROM ${tablePrefix}workflow_entity `); for (const { name } of workflowNames) { - - const duplicates = await queryRunner.query(` + const [duplicatesQuery, parameters] = queryRunner.connection.driver.escapeQueryWithParameters(` SELECT id, name FROM ${tablePrefix}workflow_entity - WHERE name = '${name}' + WHERE name = :name ORDER BY "createdAt" ASC - `); + `, { name }, {}); + + const duplicates = await queryRunner.query(duplicatesQuery, parameters); if (duplicates.length > 1) { - await Promise.all(duplicates.map(({ id, name }: { id: number; name: string; }, index: number) => { if (index === 0) return Promise.resolve(); - return queryRunner.query(` + const [updateQuery, updateParams] = queryRunner.connection.driver.escapeQueryWithParameters(` UPDATE ${tablePrefix}workflow_entity - SET name = '${name} ${index + 1}' + SET name = :name WHERE id = '${id}' - `); + `, { name: `${name} ${index + 1}`}, {}); + + return queryRunner.query(updateQuery, updateParams); })); - } - } await queryRunner.query(`CREATE UNIQUE INDEX "IDX_${tablePrefixPure}a252c527c4c89237221fe2c0ab" ON ${tablePrefix}workflow_entity ("name") `); diff --git a/packages/cli/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.ts b/packages/cli/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.ts index 2f38cf35bd..732b080ed0 100644 --- a/packages/cli/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.ts @@ -13,27 +13,27 @@ export class UniqueWorkflowNames1620821879465 implements MigrationInterface { `); for (const { name } of workflowNames) { - - const duplicates = await queryRunner.query(` + const [duplicatesQuery, parameters] = queryRunner.connection.driver.escapeQueryWithParameters(` SELECT id, name FROM "${tablePrefix}workflow_entity" - WHERE name = "${name}" + WHERE name = :name ORDER BY createdAt ASC - `); + `, { name }, {}); + + const duplicates = await queryRunner.query(duplicatesQuery, parameters); if (duplicates.length > 1) { - await Promise.all(duplicates.map(({ id, name }: { id: number; name: string; }, index: number) => { if (index === 0) return Promise.resolve(); - return queryRunner.query(` + const [updateQuery, updateParams] = queryRunner.connection.driver.escapeQueryWithParameters(` UPDATE "${tablePrefix}workflow_entity" - SET name = "${name} ${index + 1}" + SET name = :name WHERE id = '${id}' - `); + `, { name: `${name} ${index + 1}`}, {}); + + return queryRunner.query(updateQuery, updateParams); })); - } - } await queryRunner.query(`CREATE UNIQUE INDEX "IDX_${tablePrefix}943d8f922be094eb507cb9a7f9" ON "${tablePrefix}workflow_entity" ("name") `); From ef08a4a3f75e0291da1d98126c563a8876e1df28 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Mon, 31 May 2021 13:15:59 -0500 Subject: [PATCH 2/4] :bookmark: Release n8n-editor-ui@0.92.1 --- packages/editor-ui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index 085fbfe03d..9e9ccdc863 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -1,6 +1,6 @@ { "name": "n8n-editor-ui", - "version": "0.92.0", + "version": "0.92.1", "description": "Workflow Editor UI for n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From 88e89c0b74ce07cff55c0f80c413f1385d3126e0 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Mon, 31 May 2021 13:17:25 -0500 Subject: [PATCH 3/4] :arrow_up: Set n8n-editor-ui@0.92.1 on n8n --- packages/cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index d8790254aa..977747278c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -107,7 +107,7 @@ "lodash.get": "^4.4.2", "mysql2": "~2.2.0", "n8n-core": "~0.73.0", - "n8n-editor-ui": "~0.92.0", + "n8n-editor-ui": "~0.92.1", "n8n-nodes-base": "~0.119.1", "n8n-workflow": "~0.60.0", "oauth-1.0a": "^2.2.6", From 79a8536d0e12a558d5753930edb7b7a994901f61 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Mon, 31 May 2021 13:18:25 -0500 Subject: [PATCH 4/4] :bookmark: Release n8n@0.122.2 --- packages/cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 977747278c..4ad8a2abe8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "n8n", - "version": "0.122.1", + "version": "0.122.2", "description": "n8n Workflow Automation Tool", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io",