From 25c94b932f029db7630733a1004b74b20ce81e66 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 27 Mar 2025 15:57:00 +0000 Subject: [PATCH] Fix for signatures, they were not considered JSON fields which meant that SQL server was denying updates to them (as with the attachment fields). --- .../server/src/api/routes/tests/row.spec.ts | 19 +++++++++++++++++++ .../src/integrations/microsoftSqlServer.ts | 3 +-- packages/shared-core/src/constants/fields.ts | 8 ++++++++ packages/types/src/documents/app/row.ts | 1 + 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index cf24430f82..c55db8640c 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -2276,6 +2276,25 @@ if (descriptions.length) { expect(updated.attachment.key).toBe(newAttachment.key) }) + it("should allow updating signature row", async () => { + const { table, row } = await coreAttachmentEnrichment( + { + signature: { + type: FieldType.SIGNATURE_SINGLE, + name: "signature", + constraints: { presence: false }, + }, + }, + "signature", + `${uuid.v4()}.png` + ) + + const newSignature = generateAttachment(`${uuid.v4()}.png`) + row["signature"] = newSignature + const updated = await config.api.row.save(table._id!, row) + expect(updated.signature.key).toBe(newSignature.key) + }) + it("should allow enriching attachment list rows", async () => { await coreAttachmentEnrichment( { diff --git a/packages/server/src/integrations/microsoftSqlServer.ts b/packages/server/src/integrations/microsoftSqlServer.ts index 8548d57f15..9bc0eb3855 100644 --- a/packages/server/src/integrations/microsoftSqlServer.ts +++ b/packages/server/src/integrations/microsoftSqlServer.ts @@ -371,8 +371,7 @@ class SqlServerIntegration extends Sql implements DatasourcePlus { ? `${query.sql}; SELECT SCOPE_IDENTITY() AS id;` : query.sql this.log(sql, query.bindings) - const resp = await request.query(sql) - return resp + return await request.query(sql) } catch (err: any) { let readableMessage = getReadableErrorMessage( SourceName.SQL_SERVER, diff --git a/packages/shared-core/src/constants/fields.ts b/packages/shared-core/src/constants/fields.ts index 5acf07d863..e169877eb8 100644 --- a/packages/shared-core/src/constants/fields.ts +++ b/packages/shared-core/src/constants/fields.ts @@ -30,4 +30,12 @@ export const SWITCHABLE_TYPES: SwitchableTypes = { FieldType.LONGFORM, ], [FieldType.NUMBER]: [FieldType.NUMBER, FieldType.BOOLEAN], + [FieldType.JSON]: [ + FieldType.JSON, + FieldType.ARRAY, + FieldType.ATTACHMENTS, + FieldType.ATTACHMENT_SINGLE, + FieldType.BB_REFERENCE, + FieldType.SIGNATURE_SINGLE, + ], } diff --git a/packages/types/src/documents/app/row.ts b/packages/types/src/documents/app/row.ts index bb58933b65..4c32e45a8c 100644 --- a/packages/types/src/documents/app/row.ts +++ b/packages/types/src/documents/app/row.ts @@ -128,6 +128,7 @@ export enum FieldType { export const JsonTypes = [ FieldType.ATTACHMENT_SINGLE, FieldType.ATTACHMENTS, + FieldType.SIGNATURE_SINGLE, // only BB_REFERENCE is JSON, it's an array, BB_REFERENCE_SINGLE is a string type FieldType.BB_REFERENCE, FieldType.JSON,