[Fix] isLabelSyncedWithName should be nullable (#9028)
isLabelSyncedWithName should be nullable for fieldMetadata, as it is for objectMetadata. + Adding missing validation on label and name sync in fieldMetadataService for creation and update + adding metadata tests
This commit is contained in:
@ -147,7 +147,7 @@ export class FieldMetadataDTO<
|
||||
|
||||
@IsBoolean()
|
||||
@IsOptional()
|
||||
@Field()
|
||||
@Field({ nullable: true })
|
||||
isLabelSyncedWithName?: boolean;
|
||||
|
||||
@IsDateString()
|
||||
|
||||
@ -32,6 +32,7 @@ import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-
|
||||
import { isSelectFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-select-field-metadata-type.util';
|
||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
import { assertMutationNotOnRemoteObject } from 'src/engine/metadata-modules/object-metadata/utils/assert-mutation-not-on-remote-object.util';
|
||||
import { validateNameAndLabelAreSyncOrThrow } from 'src/engine/metadata-modules/object-metadata/utils/validate-object-metadata-input.util';
|
||||
import {
|
||||
RelationMetadataEntity,
|
||||
RelationMetadataType,
|
||||
@ -175,6 +176,13 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
|
||||
objectMetadata,
|
||||
);
|
||||
|
||||
if (fieldMetadataForCreate.isLabelSyncedWithName === true) {
|
||||
validateNameAndLabelAreSyncOrThrow(
|
||||
fieldMetadataForCreate.label,
|
||||
fieldMetadataForCreate.name,
|
||||
);
|
||||
}
|
||||
|
||||
console.time('createOne save');
|
||||
const createdFieldMetadata = await fieldMetadataRepository.save(
|
||||
fieldMetadataForCreate,
|
||||
@ -407,6 +415,17 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
|
||||
objectMetadata,
|
||||
);
|
||||
|
||||
const isLabelSyncedWithName =
|
||||
fieldMetadataForUpdate.isLabelSyncedWithName ??
|
||||
existingFieldMetadata.isLabelSyncedWithName;
|
||||
|
||||
if (isLabelSyncedWithName) {
|
||||
validateNameAndLabelAreSyncOrThrow(
|
||||
fieldMetadataForUpdate.label ?? existingFieldMetadata.label,
|
||||
fieldMetadataForUpdate.name ?? existingFieldMetadata.name,
|
||||
);
|
||||
}
|
||||
|
||||
// We're running field update under a transaction, so we can rollback if migration fails
|
||||
await fieldMetadataRepository.update(id, fieldMetadataForUpdate);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user