From b1f12d72570621693a984a55d2f4f9134dc8abae Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Tue, 4 Jun 2024 13:26:40 +0200 Subject: [PATCH] Fix input position backfill (#5731) Some objects do not have position field so they should not be backfilled --- .../factories/query-runner-args.factory.ts | 5 ++++- .../object-metadata/utils/has-position-field.util.ts | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/has-position-field.util.ts diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts index 728d77ae3..4a07ee358 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts @@ -13,6 +13,7 @@ import { import { RecordFilter } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface'; import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { hasPositionField } from 'src/engine/metadata-modules/object-metadata/utils/has-position-field.util'; import { RecordPositionFactory } from './record-position.factory'; @@ -39,6 +40,8 @@ export class QueryRunnerArgsFactory { ]), ); + const shouldBackfillPosition = hasPositionField(options.objectMetadataItem); + switch (resolverArgsType) { case ResolverArgsType.CreateMany: return { @@ -47,7 +50,7 @@ export class QueryRunnerArgsFactory { (args as CreateManyResolverArgs).data.map((arg, index) => this.overrideDataByFieldMetadata(arg, options, fieldMetadataMap, { argIndex: index, - shouldBackfillPosition: true, + shouldBackfillPosition, }), ), ), diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/has-position-field.util.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/has-position-field.util.ts new file mode 100644 index 000000000..a357da4c3 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/has-position-field.util.ts @@ -0,0 +1,6 @@ +import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; + +export const hasPositionField = (objectMetadataItem: ObjectMetadataInterface) => + ['opportunity', 'person', 'company'].includes( + objectMetadataItem.nameSingular, + ) || objectMetadataItem.isCustom;