From b08e95494c4d19a6447cd3d855fa3d97686aceec Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 18 Apr 2024 11:34:21 +0200 Subject: [PATCH] Move id column check before foreign table creation (#5029) When distant table does not have an id column, syncing does not work. Today the check is only made after creating the foreign table locally. We should do it first, so we avoid having a foreign table created and failing right after. Co-authored-by: Thomas Trompette --- .../remote-table/remote-table.service.ts | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table.service.ts index 18b061a21..c9c599e2b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table.service.ts @@ -151,6 +151,15 @@ export class RemoteTableService { input.schema, ); + // We only support remote tables with an id column for now. + const remoteTableIdColumn = remoteTableColumns.find( + (column) => column.columnName === 'id', + ); + + if (!remoteTableIdColumn) { + throw new BadRequestException('Remote table must have an id column'); + } + await this.createForeignTable( workspaceId, localTableName, @@ -163,6 +172,7 @@ export class RemoteTableService { workspaceId, localTableName, remoteTableColumns, + remoteTableIdColumn, dataSourceMetatada.id, ); @@ -406,17 +416,9 @@ export class RemoteTableService { workspaceId: string, localTableName: string, remoteTableColumns: RemoteTableColumn[], + remoteTableIdColumn: RemoteTableColumn, dataSourceMetadataId: string, ) { - // We only support remote tables with an id column for now. - const remoteTableIdColumn = remoteTableColumns.filter( - (column) => column.columnName === 'id', - )?.[0]; - - if (!remoteTableIdColumn) { - throw new BadRequestException('Remote table must have an id column'); - } - const objectMetadata = await this.objectMetadataService.createOne({ nameSingular: localTableName, namePlural: plural(localTableName),