Skip to content

Commit

Permalink
Handle undefined cases and improve code quality
Browse files Browse the repository at this point in the history
  • Loading branch information
ijreilly committed May 21, 2024
1 parent 93ddbdd commit d4460e2
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,14 @@ export class DistantTableService {
public async fetchDistantTables(
remoteServer: RemoteServerEntity<RemoteServerType>,
workspaceId: string,
tableName?: string,
): Promise<DistantTables> {
if (remoteServer.schema) {
return this.getDistantTablesFromDynamicSchema(remoteServer, workspaceId);
return this.getDistantTablesFromDynamicSchema(
remoteServer,
workspaceId,
tableName,
);
}

return this.getDistantTablesFromStaticSchema(remoteServer);
Expand All @@ -39,20 +44,13 @@ export class DistantTableService {
workspaceId: string,
tableName: string,
): Promise<PostgresTableSchemaColumn[]> {
if (remoteServer.schema) {
const distantTables = await this.getDistantTablesFromDynamicSchema(
remoteServer,
workspaceId,
tableName,
);

return distantTables[tableName];
}

const distantTables =
await this.getDistantTablesFromStaticSchema(remoteServer);
const distantTables = await this.fetchDistantTables(
remoteServer,
workspaceId,
tableName,
);

return distantTables[tableName];
return distantTables[tableName] || [];
}

private async getDistantTablesFromDynamicSchema(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,18 @@ export class RemoteTableSchemaUpdateService {
distantTables,
});

const remoteTablesDistantNames = remoteTables.map(
(remoteTable) => remoteTable.distantTableName,
const remoteTablesDistantNames = new Set(
remoteTables.map((remoteTable) => remoteTable.distantTableName),
);

const distantTablesWithUpdates = Object.keys(distantTables).map(
(tableName) => ({
name: tableName,
schema: remoteServerSchema,
status: remoteTablesDistantNames.includes(tableName)
status: remoteTablesDistantNames.has(tableName)
? RemoteTableStatus.SYNCED
: RemoteTableStatus.NOT_SYNCED,
schemaPendingUpdates: schemaPendingUpdates[tableName],
schemaPendingUpdates: schemaPendingUpdates[tableName] || [],
}),
);

Expand All @@ -67,7 +67,7 @@ export class RemoteTableSchemaUpdateService {
schemaPendingUpdates: updates,
}));

return distantTablesWithUpdates.concat(deletedTables);
return [...distantTablesWithUpdates, ...deletedTables];
}

public computeForeignTableColumnsUpdates = (
Expand Down Expand Up @@ -146,8 +146,8 @@ export class RemoteTableSchemaUpdateService {
foreignTableColumns: PostgresTableSchemaColumn[],
distantTableColumns: PostgresTableSchemaColumn[],
) => {
const foreignTableColumnNames = foreignTableColumns.map(
(column) => column.columnName,
const foreignTableColumnNames = new Set(
foreignTableColumns.map((column) => column.columnName),
);
const distantTableColumnsWithConvertedName = distantTableColumns.map(
(column) => {
Expand All @@ -159,9 +159,9 @@ export class RemoteTableSchemaUpdateService {
);

const columnsAdded = distantTableColumnsWithConvertedName.filter(
(column) => !foreignTableColumnNames.includes(column.name),
(column) => !foreignTableColumnNames.has(column.name),
);
const columnsDeleted = foreignTableColumnNames.filter(
const columnsDeleted = Array.from(foreignTableColumnNames).filter(
(columnName) =>
!distantTableColumnsWithConvertedName
.map((column) => column.name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ export class RemoteTableService {
remoteTable.distantTableName,
);

if (!distantTableColumns) {
if (isEmpty(distantTableColumns)) {
await this.unsyncOne(workspaceId, remoteTable, remoteServer);

return {};
Expand Down

0 comments on commit d4460e2

Please sign in to comment.