const RateLimiter = require('rate-limiter-flexible');
/**
* Cleans data in a collection with rate limiting.
* @param {object} collection - The collection to clean. Must have a `collectionName` property.
* @param {function} cleanupFunction - A function that performs the cleanup operations.
* @param {number} maxRequests - The maximum number of requests allowed.
* @param {number} interval - The time interval (in seconds) for rate limiting.
*/
async function cleanCollection(collection, cleanupFunction, maxRequests, interval) {
const limiter = RateLimiter({ maxRequests, duration: interval });
try {
await limiter.consume(); // Acquire a token
console.log(`Cleaning collection: ${collection.collectionName}`);
await cleanupFunction(collection);
console.log(`Finished cleaning collection: ${collection.collectionName}`);
} catch (error) {
console.error(`Error cleaning collection ${collection.collectionName}:`, error);
}
}
module.exports = cleanCollection;
Add your comment