diff --git a/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.service.ts b/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.service.ts index 226b5a9ca8..6e6f46a4ca 100644 --- a/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.service.ts @@ -46,6 +46,15 @@ export class DataSourceService { }); } + async getLastDataSourceMetadataFromWorkspaceId( + workspaceId: string, + ): Promise { + return this.dataSourceMetadataRepository.findOne({ + where: { workspaceId }, + order: { createdAt: 'DESC' }, + }); + } + async getLastDataSourceMetadataFromWorkspaceIdOrFail( workspaceId: string, ): Promise { diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts index f7447a1318..2c733961a2 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts @@ -14,7 +14,10 @@ export class WorkspaceDatasourceFactory { private readonly environmentService: EnvironmentService, ) {} - public async create(entities: EntitySchema[], workspaceId: string) { + public async create( + entities: EntitySchema[], + workspaceId: string, + ): Promise { const storedWorkspaceDataSource = DataSourceStorage.getDataSource(workspaceId); @@ -23,10 +26,14 @@ export class WorkspaceDatasourceFactory { } const dataSourceMetadata = - await this.dataSourceService.getLastDataSourceMetadataFromWorkspaceIdOrFail( + await this.dataSourceService.getLastDataSourceMetadataFromWorkspaceId( workspaceId, ); + if (!dataSourceMetadata) { + return null; + } + const workspaceDataSource = new WorkspaceDataSource({ url: dataSourceMetadata.url ?? diff --git a/packages/twenty-server/src/engine/twenty-orm/twenty-orm.manager.ts b/packages/twenty-server/src/engine/twenty-orm/twenty-orm.manager.ts index caaa4c2164..c2e12ea456 100644 --- a/packages/twenty-server/src/engine/twenty-orm/twenty-orm.manager.ts +++ b/packages/twenty-server/src/engine/twenty-orm/twenty-orm.manager.ts @@ -35,6 +35,11 @@ export class TwentyORMManager { entities, workspaceId, ); + + if (!workspaceDataSource) { + throw new Error('Workspace data source not found'); + } + const entitySchema = this.entitySchemaFactory.create(entityClass); return workspaceDataSource.getRepository(entitySchema);