FlatObjectMetadataMaps and non FP style refactor (#13590)
# Introduction - Retrieveing flat-object-metadata-maps for input transpilation, we decided not to introduce map merge for remaining validation operation for the moment - Refactored the field metadata service v2 to sequentially optimistically render on each iteration
This commit is contained in:
+6
-8
@@ -18,16 +18,16 @@ import { generateRatingOptions } from 'src/engine/metadata-modules/field-metadat
|
||||
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { fromRelationCreateFieldInputToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadata.util';
|
||||
import { getDefaultFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util';
|
||||
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
|
||||
type FromCreateFieldInputToFlatObjectMetadata = {
|
||||
rawCreateFieldInput: CreateFieldInput;
|
||||
existingFlatObjectMetadatas: FlatObjectMetadata[];
|
||||
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
|
||||
};
|
||||
|
||||
export const fromCreateFieldInputToFlatFieldAndItsFlatObjectMetadata = async ({
|
||||
existingFlatObjectMetadatas,
|
||||
rawCreateFieldInput,
|
||||
existingFlatObjectMetadataMaps,
|
||||
}: FromCreateFieldInputToFlatObjectMetadata): Promise<FlatFieldMetadata[]> => {
|
||||
if (rawCreateFieldInput.isRemoteCreation) {
|
||||
throw new FieldMetadataException(
|
||||
@@ -40,10 +40,8 @@ export const fromCreateFieldInputToFlatFieldAndItsFlatObjectMetadata = async ({
|
||||
rawCreateFieldInput,
|
||||
['description', 'icon', 'label', 'name', 'objectMetadataId', 'type'],
|
||||
);
|
||||
const parentFlatObjectMetadata = existingFlatObjectMetadatas.find(
|
||||
(existingFlatObjectMetadata) =>
|
||||
existingFlatObjectMetadata.id === createFieldInput.objectMetadataId,
|
||||
);
|
||||
const parentFlatObjectMetadata =
|
||||
existingFlatObjectMetadataMaps.byId[createFieldInput.objectMetadataId];
|
||||
|
||||
if (!isDefined(parentFlatObjectMetadata)) {
|
||||
throw new FieldMetadataException(
|
||||
@@ -70,7 +68,7 @@ export const fromCreateFieldInputToFlatFieldAndItsFlatObjectMetadata = async ({
|
||||
}
|
||||
case FieldMetadataType.RELATION: {
|
||||
return fromRelationCreateFieldInputToFlatFieldMetadata({
|
||||
existingFlatObjectMetadatas,
|
||||
existingFlatObjectMetadataMaps,
|
||||
sourceParentFlatObjectMetadata: parentFlatObjectMetadata,
|
||||
createFieldInput,
|
||||
});
|
||||
|
||||
+7
-6
@@ -12,6 +12,7 @@ import {
|
||||
import { validateRelationCreationPayloadOrThrow } from 'src/engine/metadata-modules/field-metadata/utils/validate-relation-creation-payload.util';
|
||||
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { getDefaultFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util';
|
||||
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
|
||||
import { computeMetadataNameFromLabel } from 'src/engine/metadata-modules/utils/validate-name-and-label-are-sync-or-throw.util';
|
||||
@@ -39,11 +40,11 @@ const computeFieldMetadataRelationSettingsForRelationType = ({
|
||||
|
||||
type FromRelationCreateFieldInputToFlatFieldMetadataArgs = {
|
||||
createFieldInput: CreateFieldInput;
|
||||
existingFlatObjectMetadatas: FlatObjectMetadata[];
|
||||
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
|
||||
sourceParentFlatObjectMetadata: FlatObjectMetadata;
|
||||
};
|
||||
export const fromRelationCreateFieldInputToFlatFieldMetadata = async ({
|
||||
existingFlatObjectMetadatas,
|
||||
existingFlatObjectMetadataMaps,
|
||||
sourceParentFlatObjectMetadata,
|
||||
createFieldInput,
|
||||
}: FromRelationCreateFieldInputToFlatFieldMetadataArgs): Promise<
|
||||
@@ -59,10 +60,10 @@ export const fromRelationCreateFieldInputToFlatFieldMetadata = async ({
|
||||
}
|
||||
await validateRelationCreationPayloadOrThrow(relationCreationPayload);
|
||||
|
||||
const targetParentFlatObjectMetadata = existingFlatObjectMetadatas.find(
|
||||
(existingFlatObject) =>
|
||||
existingFlatObject.id === relationCreationPayload.targetObjectMetadataId,
|
||||
);
|
||||
const targetParentFlatObjectMetadata =
|
||||
existingFlatObjectMetadataMaps.byId[
|
||||
relationCreationPayload.targetObjectMetadataId
|
||||
];
|
||||
|
||||
if (!isDefined(targetParentFlatObjectMetadata)) {
|
||||
throw new FieldMetadataException(
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { mergeTwoFlatFieldMetadatas } from 'src/engine/metadata-modules/flat-field-metadata/utils/merge-two-flat-field-metadatas.util';
|
||||
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
|
||||
export const mergeFlatFieldMetadatasInFlatObjectMetadata = ({
|
||||
flatFieldMetadatas,
|
||||
flatObjectMetadata,
|
||||
}: {
|
||||
flatObjectMetadata: FlatObjectMetadata;
|
||||
flatFieldMetadatas: FlatFieldMetadata[];
|
||||
}) => {
|
||||
return {
|
||||
...flatObjectMetadata,
|
||||
flatFieldMetadatas: mergeTwoFlatFieldMetadatas({
|
||||
destFlatFieldMetadatas: flatObjectMetadata.flatFieldMetadatas,
|
||||
toMergeFlatFieldMetadatas: flatFieldMetadatas,
|
||||
}),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user