Connect logic in Workspace Entity Manager (#13078)
Large PR, sorry for that. Don't hesitate to reach me to have full context (env. 500lines for integration and unit tests) - Add connect logic in Workspace Entity Manager - Update QueryDeepPartialEntity type to enable dev to use connect - Add integration test on createOne / createMany - Add unit test to cover main utils - Remove feature flag on connect closes https://github.com/twentyhq/core-team-issues/issues/1148 closes https://github.com/twentyhq/core-team-issues/issues/1147
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
||||
import { EntitySchema, EntityTarget, ObjectLiteral } from 'typeorm';
|
||||
|
||||
import { WorkspaceInternalContext } from 'src/engine/twenty-orm/interfaces/workspace-internal-context.interface';
|
||||
|
||||
import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util';
|
||||
import {
|
||||
TwentyORMException,
|
||||
TwentyORMExceptionCode,
|
||||
} from 'src/engine/twenty-orm/exceptions/twenty-orm.exception';
|
||||
import { WorkspaceEntitiesStorage } from 'src/engine/twenty-orm/storage/workspace-entities.storage';
|
||||
|
||||
export const getObjectMetadataFromEntityTarget = <T extends ObjectLiteral>(
|
||||
entityTarget: EntityTarget<T>,
|
||||
internalContext: WorkspaceInternalContext,
|
||||
) => {
|
||||
const objectMetadataName =
|
||||
typeof entityTarget === 'string'
|
||||
? entityTarget
|
||||
: WorkspaceEntitiesStorage.getObjectMetadataName(
|
||||
internalContext.workspaceId,
|
||||
entityTarget as EntitySchema,
|
||||
);
|
||||
|
||||
if (!objectMetadataName) {
|
||||
throw new TwentyORMException(
|
||||
'Object metadata name is missing',
|
||||
TwentyORMExceptionCode.MALFORMED_METADATA,
|
||||
);
|
||||
}
|
||||
|
||||
const objectMetadata = getObjectMetadataMapItemByNameSingular(
|
||||
internalContext.objectMetadataMaps,
|
||||
objectMetadataName,
|
||||
);
|
||||
|
||||
if (!objectMetadata) {
|
||||
throw new TwentyORMException(
|
||||
`Object metadata for object "${objectMetadataName}" is missing ` +
|
||||
`in workspace "${internalContext.workspaceId}" ` +
|
||||
`with object metadata collection length: ${
|
||||
Object.keys(internalContext.objectMetadataMaps.idByNameSingular)
|
||||
.length
|
||||
}`,
|
||||
TwentyORMExceptionCode.MALFORMED_METADATA,
|
||||
);
|
||||
}
|
||||
|
||||
return objectMetadata;
|
||||
};
|
||||
Reference in New Issue
Block a user