Introduce remote table entity (#4994)

We will require remote table entity to map distant table name and local
foreign table name.
Introducing the entity:
- new source of truth to know if a table is sync or not
- created synchronously at the same time as metadata and foreign table

Adding a few more changes:
- exception rather than errors so the user can see these
- `pluralize` library that will allow to stop adding `Remote` suffix on
names

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
This commit is contained in:
Thomas Trompette
2024-04-17 10:52:10 +02:00
committed by GitHub
parent 17422b7690
commit 6fa2aee624
12 changed files with 372 additions and 201 deletions

View File

@ -113,24 +113,10 @@ export class RemoteServerService<T extends RemoteServerType> {
});
if (!remoteServer) {
throw new NotFoundException('Object does not exist');
throw new NotFoundException('Remote server does not exist');
}
const foreignTablesToRemove =
await this.remoteTableService.fetchForeignTableNamesWithinWorkspace(
workspaceId,
remoteServer.foreignDataWrapperId,
);
if (foreignTablesToRemove.length) {
for (const foreignTableName of foreignTablesToRemove) {
await this.remoteTableService.removeForeignTableAndMetadata(
foreignTableName,
workspaceId,
remoteServer,
);
}
}
await this.remoteTableService.unsyncAll(workspaceId, remoteServer);
return this.metadataDataSource.transaction(
async (entityManager: EntityManager) => {