Fix sign up broken because of missing workspace schema (#6013)

Allow workspace datasource factory to return null if the workspace
schema has not been created yet
This commit is contained in:
Charles Bochet 2024-06-25 10:59:07 +02:00 committed by GitHub
parent 7fb5c9b60f
commit f8c057deea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 2 deletions

View File

@ -46,6 +46,15 @@ export class DataSourceService {
});
}
async getLastDataSourceMetadataFromWorkspaceId(
workspaceId: string,
): Promise<DataSourceEntity | null> {
return this.dataSourceMetadataRepository.findOne({
where: { workspaceId },
order: { createdAt: 'DESC' },
});
}
async getLastDataSourceMetadataFromWorkspaceIdOrFail(
workspaceId: string,
): Promise<DataSourceEntity> {

View File

@ -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<WorkspaceDataSource | null> {
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 ??

View File

@ -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<T>(entitySchema);