From ed36b19af7522ea55fb973b08428498b0f94e3ab Mon Sep 17 00:00:00 2001 From: Weiko Date: Wed, 23 Jul 2025 19:28:23 +0200 Subject: [PATCH] Fix increment/decrement methods in twenty orm (#13389) Increment/Decrement methods were broken and were executing a SELECT query while selecting twice the same table so the id column reference was not precise enough. For some reason it didn't recognise the builder as an update builder AND aliases were not parsed properly I've modified the code to re-use the existing update method that is correctly implemented- BEFORE ```sql query failed: SELECT entity FROM "workspace_1wgvd1injqtife6y4rvfbu3h5"."viewField" "entity", "workspace_1wgvd1injqtife6y4rvfbu3h5"."viewField" "workspace_1wgvd1injqtife6y4rvfbu3h5.viewField" WHERE "id" IN ($1) -- PARAMETERS: ["cd665f5b-c3ce-44ec-a9b0-51a2d711287e"] error: error: column reference "id" is ambiguous ``` AFTER ```sql query: UPDATE "workspace_1wgvd1injqtife6y4rvfbu3h5"."viewField" SET "position" = "position" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "id" IN ($1) -- PARAMETERS: ["cd665f5b-c3ce-44ec-a9b0-51a2d711287e"] ``` --- .../workspace-entity-manager.ts | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.ts index c32e6d093..927a00fe2 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.ts @@ -352,17 +352,13 @@ export class WorkspaceEntityManager extends EntityManager { () => this.connection.driver.escape(column.databaseName) + ' + ' + value, ); - return this.createQueryBuilder( + return this.update( target, - 'entity', - undefined, + criteria, + values, permissionOptions, - ) - .update(target as QueryDeepPartialEntity) - .set(values) - .where(criteria) - .returning(selectedColumns) - .execute(); + selectedColumns, + ); } validatePermissions({ @@ -951,17 +947,13 @@ export class WorkspaceEntityManager extends EntityManager { () => this.connection.driver.escape(column.databaseName) + ' - ' + value, ); - return this.createQueryBuilder( + return this.update( target, - 'entity', - undefined, + criteria, + values, permissionOptions, - ) - .update(target as QueryDeepPartialEntity) - .set(values) - .where(criteria) - .returning(selectedColumns) - .execute(); + selectedColumns, + ); } override async findByIds(