@@ -1467,38 +1467,42 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI {
14671467 if ( ! resource . options . allowedActions . delete ) {
14681468 return { error : `Resource '${ resource . resourceId } ' does not allow delete action` } ;
14691469 }
1470+
1471+ const { allowedActions } = await interpretResource (
1472+ adminUser ,
1473+ resource ,
1474+ { requestBody : body , record : record } ,
1475+ ActionCheckSource . DeleteRequest ,
1476+ this . adminforth
1477+ ) ;
1478+
1479+ const { allowed, error } = checkAccess ( AllowedActionsEnum . delete , allowedActions ) ;
1480+ if ( ! allowed ) {
1481+ return { error } ;
1482+ }
1483+
14701484 const childResources = this . adminforth . config . resources . filter ( r => r . columns . some ( c => c . foreignResource ?. resourceId === resource . resourceId ) ) ;
14711485 if ( childResources . length ) {
14721486 for ( const childRes of childResources ) {
14731487 const foreignResourceColumn = childRes . columns . find ( c => c . foreignResource ?. resourceId === resource . resourceId ) ;
14741488 if ( ! foreignResourceColumn . foreignResource . onDelete ) continue ;
14751489 const onDeleteStrategy = foreignResourceColumn . foreignResource . onDelete ;
14761490 const childRecords = await this . adminforth . resource ( childRes . resourceId ) . list ( Filters . EQ ( foreignResourceColumn . name , body [ 'primaryKey' ] ) )
1491+ const childPkColumn = childRes . columns . find ( col => col . primaryKey ) ;
1492+ if ( ! childPkColumn ) continue ;
1493+ const childPkFieldName = childPkColumn . name ;
14771494 if ( onDeleteStrategy === 'cascade' ) {
14781495 for ( const childRecord of childRecords ) {
1479- await this . adminforth . resource ( childRes . resourceId ) . delete ( childRecord . id ) ;
1496+ await this . adminforth . resource ( childRes . resourceId ) . delete ( childRecord [ childPkFieldName ] ) ;
14801497 }
14811498 } else if ( onDeleteStrategy === 'setNull' ) {
14821499 for ( const childRecord of childRecords ) {
1483- await this . adminforth . resource ( childRes . resourceId ) . update ( childRecord . id , { [ foreignResourceColumn . name ] : null } ) ;
1500+ await this . adminforth . resource ( childRes . resourceId ) . update ( childRecord [ childPkFieldName ] , { [ foreignResourceColumn . name ] : null } ) ;
14841501 }
14851502 }
14861503 }
14871504 }
14881505
1489- const { allowedActions } = await interpretResource (
1490- adminUser ,
1491- resource ,
1492- { requestBody : body , record : record } ,
1493- ActionCheckSource . DeleteRequest ,
1494- this . adminforth
1495- ) ;
1496-
1497- const { allowed, error } = checkAccess ( AllowedActionsEnum . delete , allowedActions ) ;
1498- if ( ! allowed ) {
1499- return { error } ;
1500- }
1501-
15021506 const { error : deleteError } = await this . adminforth . deleteResourceRecord ( {
15031507 resource, record, adminUser, recordId : body [ 'primaryKey' ] , response,
15041508 extra : { body, query, headers, cookies, requestUrl, response }
0 commit comments