Skip to content

Commit d4460e2

Browse files
committed
Handle undefined cases and improve code quality
1 parent 93ddbdd commit d4460e2

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts

+12-14
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,14 @@ export class DistantTableService {
2626
public async fetchDistantTables(
2727
remoteServer: RemoteServerEntity<RemoteServerType>,
2828
workspaceId: string,
29+
tableName?: string,
2930
): Promise<DistantTables> {
3031
if (remoteServer.schema) {
31-
return this.getDistantTablesFromDynamicSchema(remoteServer, workspaceId);
32+
return this.getDistantTablesFromDynamicSchema(
33+
remoteServer,
34+
workspaceId,
35+
tableName,
36+
);
3237
}
3338

3439
return this.getDistantTablesFromStaticSchema(remoteServer);
@@ -39,20 +44,13 @@ export class DistantTableService {
3944
workspaceId: string,
4045
tableName: string,
4146
): Promise<PostgresTableSchemaColumn[]> {
42-
if (remoteServer.schema) {
43-
const distantTables = await this.getDistantTablesFromDynamicSchema(
44-
remoteServer,
45-
workspaceId,
46-
tableName,
47-
);
48-
49-
return distantTables[tableName];
50-
}
51-
52-
const distantTables =
53-
await this.getDistantTablesFromStaticSchema(remoteServer);
47+
const distantTables = await this.fetchDistantTables(
48+
remoteServer,
49+
workspaceId,
50+
tableName,
51+
);
5452

55-
return distantTables[tableName];
53+
return distantTables[tableName] || [];
5654
}
5755

5856
private async getDistantTablesFromDynamicSchema(

packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table-schema-update/remote-table-schema-update.service.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@ export class RemoteTableSchemaUpdateService {
4141
distantTables,
4242
});
4343

44-
const remoteTablesDistantNames = remoteTables.map(
45-
(remoteTable) => remoteTable.distantTableName,
44+
const remoteTablesDistantNames = new Set(
45+
remoteTables.map((remoteTable) => remoteTable.distantTableName),
4646
);
4747

4848
const distantTablesWithUpdates = Object.keys(distantTables).map(
4949
(tableName) => ({
5050
name: tableName,
5151
schema: remoteServerSchema,
52-
status: remoteTablesDistantNames.includes(tableName)
52+
status: remoteTablesDistantNames.has(tableName)
5353
? RemoteTableStatus.SYNCED
5454
: RemoteTableStatus.NOT_SYNCED,
55-
schemaPendingUpdates: schemaPendingUpdates[tableName],
55+
schemaPendingUpdates: schemaPendingUpdates[tableName] || [],
5656
}),
5757
);
5858

@@ -67,7 +67,7 @@ export class RemoteTableSchemaUpdateService {
6767
schemaPendingUpdates: updates,
6868
}));
6969

70-
return distantTablesWithUpdates.concat(deletedTables);
70+
return [...distantTablesWithUpdates, ...deletedTables];
7171
}
7272

7373
public computeForeignTableColumnsUpdates = (
@@ -146,8 +146,8 @@ export class RemoteTableSchemaUpdateService {
146146
foreignTableColumns: PostgresTableSchemaColumn[],
147147
distantTableColumns: PostgresTableSchemaColumn[],
148148
) => {
149-
const foreignTableColumnNames = foreignTableColumns.map(
150-
(column) => column.columnName,
149+
const foreignTableColumnNames = new Set(
150+
foreignTableColumns.map((column) => column.columnName),
151151
);
152152
const distantTableColumnsWithConvertedName = distantTableColumns.map(
153153
(column) => {
@@ -159,9 +159,9 @@ export class RemoteTableSchemaUpdateService {
159159
);
160160

161161
const columnsAdded = distantTableColumnsWithConvertedName.filter(
162-
(column) => !foreignTableColumnNames.includes(column.name),
162+
(column) => !foreignTableColumnNames.has(column.name),
163163
);
164-
const columnsDeleted = foreignTableColumnNames.filter(
164+
const columnsDeleted = Array.from(foreignTableColumnNames).filter(
165165
(columnName) =>
166166
!distantTableColumnsWithConvertedName
167167
.map((column) => column.name)

packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table.service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ export class RemoteTableService {
300300
remoteTable.distantTableName,
301301
);
302302

303-
if (!distantTableColumns) {
303+
if (isEmpty(distantTableColumns)) {
304304
await this.unsyncOne(workspaceId, remoteTable, remoteServer);
305305

306306
return {};

0 commit comments

Comments
 (0)