Fix object metadata not found (#6416)
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
import { isPlainObject } from '@nestjs/common/utils/shared.utils';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DeepPartial,
|
DeepPartial,
|
||||||
DeleteResult,
|
DeleteResult,
|
||||||
@ -29,7 +31,6 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat
|
|||||||
import { WorkspaceEntitiesStorage } from 'src/engine/twenty-orm/storage/workspace-entities.storage';
|
import { WorkspaceEntitiesStorage } from 'src/engine/twenty-orm/storage/workspace-entities.storage';
|
||||||
import { computeRelationType } from 'src/engine/twenty-orm/utils/compute-relation-type.util';
|
import { computeRelationType } from 'src/engine/twenty-orm/utils/compute-relation-type.util';
|
||||||
import { isRelationFieldMetadataType } from 'src/engine/utils/is-relation-field-metadata-type.util';
|
import { isRelationFieldMetadataType } from 'src/engine/utils/is-relation-field-metadata-type.util';
|
||||||
import { isPlainObject } from 'src/utils/is-plain-object';
|
|
||||||
|
|
||||||
export class WorkspaceRepository<
|
export class WorkspaceRepository<
|
||||||
Entity extends ObjectLiteral,
|
Entity extends ObjectLiteral,
|
||||||
@ -620,21 +621,31 @@ export class WorkspaceRepository<
|
|||||||
throw new Error('Object metadata name is missing');
|
throw new Error('Object metadata name is missing');
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.internalContext.workspaceCacheStorage.getObjectMetadata(
|
const objectMetadata =
|
||||||
this.internalContext.workspaceId,
|
await this.internalContext.workspaceCacheStorage.getObjectMetadata(
|
||||||
(objectMetadata) => objectMetadata.nameSingular === objectMetadataName,
|
this.internalContext.workspaceId,
|
||||||
);
|
(objectMetadata) => objectMetadata.nameSingular === objectMetadataName,
|
||||||
}
|
);
|
||||||
|
|
||||||
private async getCompositeFieldMetadata(
|
|
||||||
objectMetadata?: ObjectMetadataEntity,
|
|
||||||
) {
|
|
||||||
objectMetadata ??= await this.getObjectMetadataFromTarget();
|
|
||||||
|
|
||||||
if (!objectMetadata) {
|
if (!objectMetadata) {
|
||||||
throw new Error('Object metadata entity is missing');
|
const objectMetadataCollection =
|
||||||
|
await this.internalContext.workspaceCacheStorage.getObjectMetadataCollection(
|
||||||
|
this.internalContext.workspaceId,
|
||||||
|
);
|
||||||
|
|
||||||
|
throw new Error(
|
||||||
|
`Object metadata for object "${objectMetadataName}" is missing` +
|
||||||
|
`in workspace "${this.internalContext.workspaceId}" ` +
|
||||||
|
`with object metadata collection length: ${objectMetadataCollection?.length}`,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return objectMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getCompositeFieldMetadataCollection(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
const compositeFieldMetadataCollection = objectMetadata.fields.filter(
|
const compositeFieldMetadataCollection = objectMetadata.fields.filter(
|
||||||
(fieldMetadata) => isCompositeFieldMetadataType(fieldMetadata.type),
|
(fieldMetadata) => isCompositeFieldMetadataType(fieldMetadata.type),
|
||||||
);
|
);
|
||||||
@ -666,8 +677,11 @@ export class WorkspaceRepository<
|
|||||||
data.map((item) => this.formatData(item)),
|
data.map((item) => this.formatData(item)),
|
||||||
) as Promise<T>;
|
) as Promise<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const objectMetadata = await this.getObjectMetadataFromTarget();
|
||||||
|
|
||||||
const compositeFieldMetadataCollection =
|
const compositeFieldMetadataCollection =
|
||||||
await this.getCompositeFieldMetadata();
|
await this.getCompositeFieldMetadataCollection(objectMetadata);
|
||||||
const compositeFieldMetadataMap = new Map(
|
const compositeFieldMetadataMap = new Map(
|
||||||
compositeFieldMetadataCollection.map((fieldMetadata) => [
|
compositeFieldMetadataCollection.map((fieldMetadata) => [
|
||||||
fieldMetadata.name,
|
fieldMetadata.name,
|
||||||
@ -738,7 +752,8 @@ export class WorkspaceRepository<
|
|||||||
}
|
}
|
||||||
|
|
||||||
const compositeFieldMetadataCollection =
|
const compositeFieldMetadataCollection =
|
||||||
await this.getCompositeFieldMetadata(objectMetadata);
|
await this.getCompositeFieldMetadataCollection(objectMetadata);
|
||||||
|
|
||||||
const compositeFieldMetadataMap = new Map(
|
const compositeFieldMetadataMap = new Map(
|
||||||
compositeFieldMetadataCollection.flatMap((fieldMetadata) => {
|
compositeFieldMetadataCollection.flatMap((fieldMetadata) => {
|
||||||
const compositeType = compositeTypeDefintions.get(fieldMetadata.type);
|
const compositeType = compositeTypeDefintions.get(fieldMetadata.type);
|
||||||
|
|||||||
Reference in New Issue
Block a user