Fix performance (#7131)
This commit is contained in:
@ -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(
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user