Fix performance (#7131)

This commit is contained in:
Weiko
2024-09-18 21:15:30 +02:00
committed by GitHub
parent 41fe8f7fea
commit 210c336ccf
4 changed files with 26 additions and 35 deletions

View File

@ -40,11 +40,11 @@ export class GraphqlQueryParser {
const parsedFilter = graphqlQueryFilterParser.parse(recordFilter); const parsedFilter = graphqlQueryFilterParser.parse(recordFilter);
if (!('deletedAt' in this.fieldMetadataMap)) { // if (!('deletedAt' in this.fieldMetadataMap)) {
return parsedFilter; return parsedFilter;
} // }
return this.addDefaultSoftDeleteCondition(parsedFilter); // return this.addDefaultSoftDeleteCondition(parsedFilter);
} }
private addDefaultSoftDeleteCondition( private addDefaultSoftDeleteCondition(

View File

@ -65,6 +65,7 @@ export class GraphqlQueryFindOneResolverService {
where, where,
select, select,
})) as ObjectRecord; })) as ObjectRecord;
const limit = QUERY_MAX_RECORDS; const limit = QUERY_MAX_RECORDS;
if (!objectRecord) { if (!objectRecord) {

View File

@ -79,7 +79,6 @@ export class EntitySchemaColumnFactory {
nullable: fieldMetadata.isNullable, nullable: fieldMetadata.isNullable,
createDate: key === 'createdAt', createDate: key === 'createdAt',
updateDate: key === 'updatedAt', updateDate: key === 'updatedAt',
deleteDate: key === 'deletedAt',
array: fieldMetadata.type === FieldMetadataType.MULTI_SELECT, array: fieldMetadata.type === FieldMetadataType.MULTI_SELECT,
default: defaultValue, default: defaultValue,
}; };

View File

@ -4,7 +4,6 @@ import { EntitySchema } from 'typeorm';
import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service'; import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ObjectMetadataMap } from 'src/engine/metadata-modules/utils/generate-object-metadata-map.util';
import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service';
import { WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource'; import { WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource';
import { import {
@ -36,13 +35,11 @@ export class WorkspaceDatasourceFactory {
workspaceMetadataVersion: number | null, workspaceMetadataVersion: number | null,
failOnMetadataCacheMiss = true, failOnMetadataCacheMiss = true,
): Promise<WorkspaceDataSource> { ): Promise<WorkspaceDataSource> {
const { const cachedWorkspaceMetadataVersion =
metadataVersion: cachedWorkspaceMetadataVersion, await this.getWorkspaceMetadataVersionFromCache(
objectMetadataMap: cachedObjectMetadataMap, workspaceId,
} = await this.getWorkspaceMetadataFromCache( failOnMetadataCacheMiss,
workspaceId, );
failOnMetadataCacheMiss,
);
if ( if (
workspaceMetadataVersion !== null && workspaceMetadataVersion !== null &&
@ -89,6 +86,19 @@ export class WorkspaceDatasourceFactory {
let cachedEntitySchemas: EntitySchema[]; let cachedEntitySchemas: EntitySchema[];
const cachedObjectMetadataMap =
await this.workspaceCacheStorageService.getObjectMetadataMap(
workspaceId,
cachedWorkspaceMetadataVersion,
);
if (!cachedObjectMetadataMap) {
throw new TwentyORMException(
`Workspace Schema not found for workspace ${workspaceId}`,
TwentyORMExceptionCode.METADATA_COLLECTION_NOT_FOUND,
);
}
if (cachedEntitySchemaOptions) { if (cachedEntitySchemaOptions) {
cachedEntitySchemas = cachedEntitySchemaOptions.map( cachedEntitySchemas = cachedEntitySchemaOptions.map(
(option) => new EntitySchema(option), (option) => new EntitySchema(option),
@ -181,13 +191,10 @@ export class WorkspaceDatasourceFactory {
); );
} }
private async getWorkspaceMetadataFromCache( private async getWorkspaceMetadataVersionFromCache(
workspaceId: string, workspaceId: string,
failOnMetadataCacheMiss = true, failOnMetadataCacheMiss = true,
): Promise<{ ): Promise<number> {
metadataVersion: number;
objectMetadataMap: ObjectMetadataMap;
}> {
let latestWorkspaceMetadataVersion = let latestWorkspaceMetadataVersion =
await this.workspaceCacheStorageService.getMetadataVersion(workspaceId); await this.workspaceCacheStorageService.getMetadataVersion(workspaceId);
@ -217,22 +224,6 @@ export class WorkspaceDatasourceFactory {
); );
} }
const objectMetadataMap = return latestWorkspaceMetadataVersion;
await this.workspaceCacheStorageService.getObjectMetadataMap(
workspaceId,
latestWorkspaceMetadataVersion,
);
if (!objectMetadataMap) {
throw new TwentyORMException(
`Object metadata map not found for workspace ${workspaceId}`,
TwentyORMExceptionCode.METADATA_COLLECTION_NOT_FOUND,
);
}
return {
metadataVersion: latestWorkspaceMetadataVersion,
objectMetadataMap,
};
} }
} }