@@ -63,7 +63,7 @@ export default class AutoRemovePlugin extends AdminForthPlugin {
6363 console . error ( 'AutoRemovePlugin runCleanup error:' , err ) ;
6464 }
6565 }
66-
66+
6767 private async cleanupByCount ( adminforth : IAdminForth ) {
6868 const limit = parseHumanNumber ( this . options . keepAtLeast ! ) ;
6969 const resource = adminforth . resource ( this . resource . resourceId ) ;
@@ -72,10 +72,17 @@ export default class AutoRemovePlugin extends AdminForthPlugin {
7272 if ( allRecords . length <= limit ) return ;
7373
7474 const toDelete = allRecords . slice ( 0 , allRecords . length - limit ) ;
75- for ( const r of toDelete ) {
76- await resource . delete ( r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] ) ;
77- console . log ( `AutoRemovePlugin: deleted record ${ r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] } due to count-based limit` ) ;
75+
76+ const itemsPerDelete = 100 ;
77+
78+ for ( let i = 0 ; i < toDelete . length ; i += itemsPerDelete ) {
79+ const deletePackage = toDelete . slice ( i , i + itemsPerDelete ) ;
80+ await Promise . all (
81+ deletePackage . map ( r => resource . delete ( r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] ) )
82+ ) ;
7883 }
84+
85+ console . log ( `AutoRemovePlugin: deleted ${ toDelete . length } records due to count-based limit` ) ;
7986 }
8087
8188 private async cleanupByTime ( adminforth : IAdminForth ) {
@@ -86,9 +93,18 @@ export default class AutoRemovePlugin extends AdminForthPlugin {
8693 const allRecords = await resource . list ( [ ] , null , null , [ Sorts . ASC ( this . options . createdAtField ) ] ) ;
8794 const toDelete = allRecords . filter ( r => new Date ( r [ this . options . createdAtField ] ) . getTime ( ) < threshold ) ;
8895
89- for ( const r of toDelete ) {
90- await resource . delete ( r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] ) ;
91- console . log ( `AutoRemovePlugin: deleted record ${ r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] } due to time-based limit` ) ;
96+ const itemsPerDelete = 100 ;
97+
98+ for ( let i = 0 ; i < toDelete . length ; i += itemsPerDelete ) {
99+ const deletePackage = toDelete . slice ( i , i + itemsPerDelete ) ;
100+
101+ await Promise . all (
102+ deletePackage . map ( r => resource . delete ( r [ this . resource . columns . find ( c => c . primaryKey ) ! . name ] ) )
103+ ) ;
104+
105+ console . log (
106+ `AutoRemovePlugin: deleted ${ deletePackage . length } records due to time-based limit`
107+ ) ;
92108 }
93109 }
94110
0 commit comments