From dbe3ea8c88157af267f47bdb6fbc4264cccd7798 Mon Sep 17 00:00:00 2001 From: Boaz Poolman Date: Fri, 21 Jan 2022 17:33:14 +0100 Subject: [PATCH] fix: More specific selection of relation entities --- server/config/type.js | 4 ++-- server/utils/getArrayDiff.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/server/config/type.js b/server/config/type.js index a7b9ea1..be9cba1 100644 --- a/server/config/type.js +++ b/server/config/type.js @@ -104,8 +104,8 @@ const ConfigType = class ConfigType { existingConfig = sanitizeConfig(existingConfig, relationName, relationSortFields); configContent = sanitizeConfig(configContent, relationName, relationSortFields); - const configToAdd = difference(configContent[relationName], existingConfig[relationName], relationSortFields[0]); - const configToDelete = difference(existingConfig[relationName], configContent[relationName], relationSortFields[0]); + const configToAdd = difference(configContent[relationName], existingConfig[relationName], relationSortFields); + const configToDelete = difference(existingConfig[relationName], configContent[relationName], relationSortFields); await Promise.all(configToDelete.map(async (config) => { const whereClause = {}; diff --git a/server/utils/getArrayDiff.js b/server/utils/getArrayDiff.js index 5dd2b38..3e6feeb 100644 --- a/server/utils/getArrayDiff.js +++ b/server/utils/getArrayDiff.js @@ -1,6 +1,12 @@ -const difference = (arrayOne, arrayTwo, compareKey) => { - return arrayOne.filter(({ [compareKey]: id1 }) => { - return !arrayTwo.some(({ [compareKey]: id2 }) => id2 === id1); +const difference = (arrayOne, arrayTwo, compareKeys) => { + return arrayOne.filter(({ + [compareKeys[0]]: id1, + [compareKeys[1]]: id2, + }) => { + return !arrayTwo.some(({ + [compareKeys[0]]: id3, + [compareKeys[1]]: id4, + }) => id1 === id3 && id2 === id4); }); };