@@ -593,27 +593,33 @@ class AdminForth implements IAdminForth {
593593 * record is partial record with only changed fields
594594 */
595595 async updateResourceRecord (
596- { resource, recordId, record, oldRecord, adminUser, extra } :
597- { resource : AdminForthResource , recordId : any , record : any , oldRecord : any , adminUser : AdminUser , extra ?: HttpExtra }
596+ { resource, recordId, record, oldRecord, adminUser, extra, updates } :
597+ | { resource : AdminForthResource , recordId : any , record : any , oldRecord : any , adminUser : AdminUser , extra ?: HttpExtra , updates ?: never }
598+ | { resource : AdminForthResource , recordId : any , record ?: never , oldRecord : any , adminUser : AdminUser , extra ?: HttpExtra , updates : any }
598599 ) : Promise < { error ?: string } > {
599- const err = this . validateRecordValues ( resource , record , 'edit' ) ;
600+ const dataToUse = updates || record ;
601+ const err = this . validateRecordValues ( resource , dataToUse , 'edit' ) ;
600602 if ( err ) {
601603 return { error : err } ;
602604 }
603605
606+ if ( record ) {
607+ console . warn ( `updateResourceRecord function received 'record' param which is deprecated and will be removed in future version, please use 'updates' instead.` ) ;
608+ }
609+
604610 // remove editReadonly columns from record
605611 for ( const column of resource . columns . filter ( ( col ) => col . editReadonly ) ) {
606- if ( column . name in record )
607- delete record [ column . name ] ;
612+ if ( column . name in dataToUse )
613+ delete dataToUse [ column . name ] ;
608614 }
609615
610616 // execute hook if needed
611617 for ( const hook of listify ( resource . hooks ?. edit ?. beforeSave ) ) {
612618 const resp = await hook ( {
613619 recordId,
614620 resource,
615- record,
616- updates : record ,
621+ record : dataToUse ,
622+ updates : dataToUse ,
617623 oldRecord,
618624 adminUser,
619625 adminforth : this ,
@@ -633,13 +639,13 @@ class AdminForth implements IAdminForth {
633639 const newValues = { } ;
634640 const connector = this . connectors [ resource . dataSource ] ;
635641
636- for ( const recordField in record ) {
637- if ( record [ recordField ] !== oldRecord [ recordField ] ) {
642+ for ( const recordField in dataToUse ) {
643+ if ( dataToUse [ recordField ] !== oldRecord [ recordField ] ) {
638644 // leave only changed fields to reduce data transfer/modifications in db
639645 const column = resource . columns . find ( ( col ) => col . name === recordField ) ;
640646 if ( ! column || ! column . virtual ) {
641647 // exclude virtual columns
642- newValues [ recordField ] = record [ recordField ] ;
648+ newValues [ recordField ] = dataToUse [ recordField ] ;
643649 }
644650 }
645651 }
@@ -652,8 +658,8 @@ class AdminForth implements IAdminForth {
652658 for ( const hook of listify ( resource . hooks ?. edit ?. afterSave ) ) {
653659 const resp = await hook ( {
654660 resource,
655- record,
656- updates : record ,
661+ record : dataToUse ,
662+ updates : dataToUse ,
657663 adminUser,
658664 oldRecord,
659665 recordId,
0 commit comments