From 9e9ba73a4383f29f59b17af8d66c81d510b6c278 Mon Sep 17 00:00:00 2001 From: Guillim Date: Thu, 17 Apr 2025 10:54:56 +0200 Subject: [PATCH] better handling the function argument without touching it (#11614) leave intact the `input` argument to avoid side effects on the parent caller --------- Co-authored-by: Charles Bochet --- .../object-metadata.service.ts | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts index 11eff1f97..50250c9a2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts @@ -16,7 +16,10 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/ import { IndexMetadataService } from 'src/engine/metadata-modules/index-metadata/index-metadata.service'; import { DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input'; import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto'; -import { UpdateOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input'; +import { + UpdateObjectPayload, + UpdateOneObjectInput, +} from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input'; import { ObjectMetadataException, ObjectMetadataExceptionCode, @@ -219,22 +222,22 @@ export class ObjectMetadataService extends TypeOrmQueryService { - const { update } = input; + const inputId = input.id; - if (isDefined(update.labelSingular)) { - update.labelSingular = capitalize(update.labelSingular); - } + const inputPayload = { + ...input.update, + ...(isDefined(input.update.labelSingular) + ? { labelSingular: capitalize(input.update.labelSingular) } + : {}), + ...(isDefined(input.update.labelPlural) + ? { labelPlural: capitalize(input.update.labelPlural) } + : {}), + }; - if (isDefined(update.labelPlural)) { - update.labelPlural = capitalize(update.labelPlural); - } - - input.update = update; - - validateObjectMetadataInputNamesOrThrow(input.update); + validateObjectMetadataInputNamesOrThrow(inputPayload); const existingObjectMetadata = await this.objectMetadataRepository.findOne({ - where: { id: input.id, workspaceId: workspaceId }, + where: { id: inputId, workspaceId: workspaceId }, }); if (!existingObjectMetadata) { @@ -246,7 +249,7 @@ export class ObjectMetadataService extends TypeOrmQueryService