From 640dd930def662fecec33f3f65afd059e6b2bdad Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Jan 2025 17:45:51 +0000 Subject: [PATCH 1/2] Updating query row to correctly decode the input table Id as it will be encoded. The CTX expects this to be passed in its decoded state as Koa would do to encoded URLs. --- .../server/src/automations/steps/queryRows.ts | 3 +- .../src/automations/tests/queryRows.spec.ts | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/server/src/automations/steps/queryRows.ts b/packages/server/src/automations/steps/queryRows.ts index 93ca8a3f33..4a02e80686 100644 --- a/packages/server/src/automations/steps/queryRows.ts +++ b/packages/server/src/automations/steps/queryRows.ts @@ -122,9 +122,10 @@ export async function run({ sortType = fieldType === FieldType.NUMBER ? FieldType.NUMBER : FieldType.STRING } + // when passing the tableId in the Ctx it needs to be decoded const ctx = buildCtx(appId, null, { params: { - tableId, + tableId: decodeURIComponent(tableId), }, body: { sortType, diff --git a/packages/server/src/automations/tests/queryRows.spec.ts b/packages/server/src/automations/tests/queryRows.spec.ts index 21e28673f3..6ec7b7abfb 100644 --- a/packages/server/src/automations/tests/queryRows.spec.ts +++ b/packages/server/src/automations/tests/queryRows.spec.ts @@ -2,6 +2,7 @@ import { EmptyFilterOption, SortOrder, Table } from "@budibase/types" import * as setup from "./utilities" import { createAutomationBuilder } from "./utilities/AutomationTestBuilder" import * as automation from "../index" +import { basicTable } from "../../tests/utilities/structures" const NAME = "Test" @@ -13,6 +14,7 @@ describe("Test a query step automation", () => { await automation.init() await config.init() table = await config.createTable() + const row = { name: NAME, description: "original description", @@ -153,4 +155,32 @@ describe("Test a query step automation", () => { expect(result.steps[0].outputs.rows).toBeDefined() expect(result.steps[0].outputs.rows.length).toBe(2) }) + + it("return rows when querying a table with a space in the name", async () => { + const tableWithSpaces = await config.createTable({ + ...basicTable(), + name: "table with spaces", + }) + await config.createRow({ + name: NAME, + tableId: tableWithSpaces._id, + }) + const result = await createAutomationBuilder({ + name: "Return All Test", + config, + }) + .appAction({ fields: {} }) + .queryRows( + { + tableId: tableWithSpaces._id!, + onEmptyFilter: EmptyFilterOption.RETURN_ALL, + filters: {}, + }, + { stepName: "Query table with spaces" } + ) + .run() + expect(result.steps[0].outputs.success).toBe(true) + expect(result.steps[0].outputs.rows).toBeDefined() + expect(result.steps[0].outputs.rows.length).toBe(1) + }) }) From 0d6474a38af3a42ee7e933d78b7e660ca37755a0 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 13 Jan 2025 12:30:19 +0000 Subject: [PATCH 2/2] Other steps. --- packages/server/src/automations/steps/createRow.ts | 2 +- packages/server/src/automations/steps/deleteRow.ts | 2 +- packages/server/src/automations/steps/updateRow.ts | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/server/src/automations/steps/createRow.ts b/packages/server/src/automations/steps/createRow.ts index e71b1e4556..cd16be2cf3 100644 --- a/packages/server/src/automations/steps/createRow.ts +++ b/packages/server/src/automations/steps/createRow.ts @@ -97,7 +97,7 @@ export async function run({ const ctx: any = buildCtx(appId, emitter, { body: inputs.row, params: { - tableId: inputs.row.tableId, + tableId: decodeURIComponent(inputs.row.tableId), }, }) try { diff --git a/packages/server/src/automations/steps/deleteRow.ts b/packages/server/src/automations/steps/deleteRow.ts index 8c61d256d1..6b8a68eeb8 100644 --- a/packages/server/src/automations/steps/deleteRow.ts +++ b/packages/server/src/automations/steps/deleteRow.ts @@ -85,7 +85,7 @@ export async function run({ _rev: inputs.revision, }, params: { - tableId: inputs.tableId, + tableId: decodeURIComponent(inputs.tableId), }, }) diff --git a/packages/server/src/automations/steps/updateRow.ts b/packages/server/src/automations/steps/updateRow.ts index ecdbdc68c8..552d846f18 100644 --- a/packages/server/src/automations/steps/updateRow.ts +++ b/packages/server/src/automations/steps/updateRow.ts @@ -90,6 +90,8 @@ export async function run({ } } const tableId = inputs.row.tableId + ? decodeURIComponent(inputs.row.tableId) + : inputs.row.tableId // Base update let rowUpdate: Record @@ -157,7 +159,7 @@ export async function run({ }, params: { rowId: inputs.rowId, - tableId, + tableId: tableId, }, }) await rowController.patch(ctx)