From 4bd0aafb8ec0fdea9e7569fd877067913028c0d1 Mon Sep 17 00:00:00 2001 From: Marie <51697796+ijreilly@users.noreply.github.com> Date: Fri, 24 May 2024 10:20:08 +0200 Subject: [PATCH] [fix] Update remote table sync status in cache after schema update (#5553) Upon schema update, sync status can change from synced to non_synced in case the update regards a table that was deleted. Let's update the sync status too to avoid displaying the table as still synchronized. https://github.com/twentyhq/twenty/assets/51697796/7ff2342b-ce9f-4179-9b76-940617cf1292 --- .../databases/hooks/useSyncRemoteTableSchemaChanges.ts | 1 + .../remote-table/distant-table/distant-table.service.ts | 2 +- .../remote-server/remote-table/remote-table.service.ts | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/twenty-front/src/modules/databases/hooks/useSyncRemoteTableSchemaChanges.ts b/packages/twenty-front/src/modules/databases/hooks/useSyncRemoteTableSchemaChanges.ts index fe4e8357b..4f1536ee1 100644 --- a/packages/twenty-front/src/modules/databases/hooks/useSyncRemoteTableSchemaChanges.ts +++ b/packages/twenty-front/src/modules/databases/hooks/useSyncRemoteTableSchemaChanges.ts @@ -35,6 +35,7 @@ export const useSyncRemoteTableSchemaChanges = () => { fieldModifiers: { schemaPendingUpdates: () => data.syncRemoteTableSchemaChanges.schemaPendingUpdates || [], + status: () => data.syncRemoteTableSchemaChanges.status, }, }); } diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts index bd1762ca2..771c6db4f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts @@ -50,7 +50,7 @@ export class DistantTableService { tableName, ); - return distantTables[tableName] || []; + return distantTables[tableName]; } private async getDistantTablesFromDynamicSchema( 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 ed7062442..0d7f04ced 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 @@ -194,6 +194,10 @@ export class RemoteTableService { input.name, ); + if (!distantTableColumns) { + throw new BadRequestException('Table not found'); + } + // We only support remote tables with an id column for now. const distantTableIdColumn = distantTableColumns.find( (column) => column.columnName === 'id', @@ -315,7 +319,7 @@ export class RemoteTableService { remoteTable.distantTableName, ); - if (isEmpty(distantTableColumns)) { + if (!distantTableColumns) { await this.unsyncOne(workspaceId, remoteTable, remoteServer); return {