<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Support\Facades\Log; use App\Jobs\CatalogScan; use App\Traits\Type; class CatalogScanAll extends Command { use DispatchesJobs,Type; /** * The name and signature of the console command. * * @var string */ protected $signature = 'catalog:scanall'. ' {type : Photo | Video }'. ' {--scanned : Rescan Scanned Photos}'; /** * The console command description. * * @var string */ protected $description = '(re)Scan Media'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $class = $this->getModelType($this->argument('type')); if ($this->option('scanned')) { $class::whereNotNull('scanned') ->update(['scanned'=>NULL]); } $c = 0; $class::NotScanned()->each(function ($item) use ($c) { if ($item->remove) { Log::warning(sprintf('Not scanning [%s], marked for removal',$item->id)); return; } $this->dispatch((new CatalogScan($item))->onQueue('scan')); $c++; }); Log::info(sprintf('Processed [%s]',$c)); } }