lamoda/cleaner
Lamoda Cleaner is a PHP library for purging old data from various storages, primarily databases. Includes configurable DB cleaners such as a Doctrine DBAL cleaner that runs parameterized cleanup queries to delete outdated records.
Installation
composer require lamoda/cleaner
Add to providers in config/app.php:
Lamoda\Cleaner\CleanerServiceProvider::class,
Publish Config
php artisan vendor:publish --provider="Lamoda\Cleaner\CleanerServiceProvider" --tag="config"
Locate config at config/cleaner.php.
First Use Case
Define a cleanup rule in config/cleaner.php:
'rules' => [
'logs' => [
'driver' => 'filesystem',
'path' => storage_path('logs'),
'extension' => 'log',
'older_than_days' => 30,
],
],
Run cleanup via Artisan:
php artisan cleaner:run
Define rules in config/cleaner.php under the rules key:
'rules' => [
'database' => [
'driver' => 'database',
'table' => 'failed_jobs',
'older_than_days' => 7,
'batch_size' => 1000,
],
's3_old_files' => [
'driver' => 's3',
'bucket' => 'my-bucket',
'prefix' => 'old-files/',
'older_than_days' => 90,
],
],
Extend functionality programmatically:
use Lamoda\Cleaner\Cleaner;
// In a service or command
$cleaner = app(Cleaner::class);
$cleaner->addRule('temp_files', [
'driver' => 'filesystem',
'path' => sys_get_temp_dir(),
'older_than_days' => 1,
]);
Add to app/Console/Kernel.php:
protected function schedule(Schedule $schedule)
{
$schedule->command('cleaner:run')->daily();
}
Extend Lamoda\Cleaner\Contracts\CleanerDriver:
namespace App\Cleaner;
use Lamoda\Cleaner\Contracts\CleanerDriver;
class CustomDriver implements CleanerDriver
{
public function clean(array $config): int
{
// Custom logic
return 42; // Items deleted
}
}
Register in config/cleaner.php:
'drivers' => [
'custom' => \App\Cleaner\CustomDriver::class,
],
--dry-run flag to preview deletions:
php artisan cleaner:run --dry-run
-v for detailed logs:
php artisan cleaner:run -v
path in filesystem rules is absolute (e.g., storage_path('logs')).batch_size or wrap in transactions.CleanerServiceProvider:
$this->app->booting(function () {
event(new \Lamoda\Cleaner\Events\CleaningStarted());
});
validateConfig in a custom driver for rule-specific checks.--dry-run first.How can I help you explore Laravel packages today?