33 lines
1.1 KiB
PHP
33 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core\File\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Modules\Core\File\Services\FileService;
|
|
|
|
/**
|
|
* Generic wrapper around FileService::pruneUnowned() — see that method's
|
|
* own docblock for what "unowned" means and why the grace period exists.
|
|
* Any caller (3dealer's product custom-field photo uploads today, some
|
|
* other future upload feature tomorrow, in this app or another consuming
|
|
* app) schedules this once per purpose string it stores files under; this
|
|
* command itself has no opinion about what any given purpose means.
|
|
*/
|
|
class PruneUnownedFilesCommand extends Command
|
|
{
|
|
protected $signature = 'boboko:file:prune-unowned {purpose} {--hours=24 : Only delete unowned files older than this}';
|
|
|
|
protected $description = 'Delete unowned files of a given purpose past their grace period';
|
|
|
|
public function handle(FileService $files): int
|
|
{
|
|
$purpose = $this->argument('purpose');
|
|
|
|
$deleted = $files->pruneUnowned($purpose, now()->subHours((int) $this->option('hours')));
|
|
|
|
$this->info("Deleted {$deleted} unowned file(s) of purpose \"{$purpose}\".");
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|