From 6753a35b13b26afb56fda5708c5298030f12607f Mon Sep 17 00:00:00 2001 From: Vitalii Kulyk Date: Wed, 19 Mar 2025 15:20:58 +0200 Subject: [PATCH] fix: update handling of polymorphic foreign resources to correctly assign values when record is null --- adminforth/modules/restApi.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/adminforth/modules/restApi.ts b/adminforth/modules/restApi.ts index da4024cac..b766de3e6 100644 --- a/adminforth/modules/restApi.ts +++ b/adminforth/modules/restApi.ts @@ -756,15 +756,6 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { data.data.forEach((item) => { item[col.name] = targetDataMap[item[col.name]]; - - if (!item[col.name]) { - if (col.foreignResource && col.foreignResource.polymorphicResources) { - const systemResource = col.foreignResource.polymorphicResources.find(pr => pr.resourceId === null); - if (systemResource) { - item[col.foreignResource.polymorphicOn] = systemResource.whenValue; - } - } - } }); }) ); @@ -987,7 +978,10 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { // for polymorphic foreign resources, we need to find out the value for polymorphicOn column for (const column of resource.columns) { - if (column.foreignResource?.polymorphicOn && record[column.name]) { + if (column.foreignResource?.polymorphicOn && record[column.name] === null) { + const systemResource = column.foreignResource.polymorphicResources.find(pr => pr.resourceId === null); + record[column.foreignResource.polymorphicOn] = systemResource.whenValue; + } else if (column.foreignResource?.polymorphicOn && record[column.name]) { const targetResources = {}; const targetConnectors = {}; const targetResourcePkFields = {}; @@ -1080,7 +1074,10 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI { // for polymorphic foreign resources, we need to find out the value for polymorphicOn column for (const column of resource.columns) { - if (column.foreignResource?.polymorphicOn && record[column.name] !== undefined) { + if (column.foreignResource?.polymorphicOn && record[column.name] === null) { + const systemResource = column.foreignResource.polymorphicResources.find(pr => pr.resourceId === null); + record[column.foreignResource.polymorphicOn] = systemResource.whenValue; + } else if (column.foreignResource?.polymorphicOn && record[column.name]) { let newPolymorphicOnValue = null; if (record[column.name]) { const targetResources = {};