Improve performance twenty orm (#6691)

## Context

As we grow, the messaging scripts are experiencing performance issues
forcing us to temporarily disable them on the cloud.
While investigating the performance, I have noticed that generating the
entity schema (for twentyORM) in the repository is taking ~500ms locally
on my Mac M2 so likely more on pods. Caching the entitySchema then!

I'm also clarifying naming around schemaVersion and cacheVersions ==>
both are renamed workspaceMetadataVersion and migrated to the workspace
table (the workspaceCacheVersion table is dropped).
This commit is contained in:
Charles Bochet
2024-08-20 19:42:02 +02:00
committed by GitHub
parent 3ae89d15de
commit 17a1760afd
80 changed files with 583 additions and 468 deletions

View File

@ -25,7 +25,7 @@ export class TwentyORMManager {
async getRepository<T extends ObjectLiteral>(
workspaceEntityOrobjectMetadataName: Type<T> | string,
): Promise<WorkspaceRepository<T>> {
const { workspaceId, cacheVersion } =
const { workspaceId, workspaceMetadataVersion } =
this.scopedWorkspaceContextFactory.create();
let objectMetadataName: string;
@ -44,20 +44,23 @@ export class TwentyORMManager {
const workspaceDataSource = await this.workspaceDataSourceFactory.create(
workspaceId,
cacheVersion,
workspaceMetadataVersion,
);
return workspaceDataSource.getRepository<T>(objectMetadataName);
}
async getDatasource() {
const { workspaceId, cacheVersion } =
const { workspaceId, workspaceMetadataVersion } =
this.scopedWorkspaceContextFactory.create();
if (!workspaceId) {
throw new Error('Workspace not found');
}
return this.workspaceDataSourceFactory.create(workspaceId, cacheVersion);
return this.workspaceDataSourceFactory.create(
workspaceId,
workspaceMetadataVersion,
);
}
}