From 9b6c2e5efa46e6700e7e538215bc4f6b54b4c813 Mon Sep 17 00:00:00 2001 From: Harminder Virk Date: Fri, 30 Aug 2024 13:32:25 +0530 Subject: [PATCH] fix: ignore metadata when computing relationships from payload (#8895) --- ...lects-and-relations-from-object-array.spec.ts | 8 ++++++++ ...et-selects-and-relations-from-object-array.ts | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/core/utils/src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts b/packages/core/utils/src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts index e09e546cc3..8c9b50574d 100644 --- a/packages/core/utils/src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts +++ b/packages/core/utils/src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts @@ -16,6 +16,12 @@ describe("getSelectsAndRelationsFromObjectArray", function () { attr_null: null, attr_undefined: undefined, }, + metadata: { + is_test: true, + nested_object: { + deeply_nested: true, + }, + }, attr_array: [ { attr_object: { @@ -43,6 +49,8 @@ describe("getSelectsAndRelationsFromObjectArray", function () { "attr_object.attr_boolean", "attr_object.attr_null", "attr_object.attr_undefined", + "metadata.is_test", + "metadata.nested_object.deeply_nested", "attr_array.attr_object.attr_string", "attr_array.attr_object.attr_boolean", "attr_array.attr_object.attr_null", diff --git a/packages/core/utils/src/common/get-selects-and-relations-from-object-array.ts b/packages/core/utils/src/common/get-selects-and-relations-from-object-array.ts index 1a491c2015..efac3a864d 100644 --- a/packages/core/utils/src/common/get-selects-and-relations-from-object-array.ts +++ b/packages/core/utils/src/common/get-selects-and-relations-from-object-array.ts @@ -1,6 +1,8 @@ import { deduplicate } from "./deduplicate" import { isObject } from "./is-object" +const KEYS_THAT_ARE_NOT_RELATIONS = ["metadata"] + export function getSelectsAndRelationsFromObjectArray( dataArray: object[], options: { objectFields: string[] } = { @@ -17,23 +19,29 @@ export function getSelectsAndRelationsFromObjectArray( for (const data of dataArray) { for (const [key, value] of Object.entries(data)) { if (isObject(value) && !options.objectFields.includes(key)) { - relations.push(setKey(key, prefix)) const res = getSelectsAndRelationsFromObjectArray( [value], options, setKey(key, prefix) ) selects.push(...res.selects) - relations.push(...res.relations) + + if (!KEYS_THAT_ARE_NOT_RELATIONS.includes(key)) { + relations.push(setKey(key, prefix)) + relations.push(...res.relations) + } } else if (Array.isArray(value)) { - relations.push(setKey(key, prefix)) const res = getSelectsAndRelationsFromObjectArray( value, options, setKey(key, prefix) ) selects.push(...res.selects) - relations.push(...res.relations) + + if (!KEYS_THAT_ARE_NOT_RELATIONS.includes(key)) { + relations.push(setKey(key, prefix)) + relations.push(...res.relations) + } } else { selects.push(setKey(key, prefix)) }