30 lines
1.2 KiB
PHP
30 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Jobs\BackfillArtworkVectorIndexJob;
|
|
use Illuminate\Console\Command;
|
|
|
|
final class BackfillArtworkVectorIndexCommand extends Command
|
|
{
|
|
protected $signature = 'artworks:vectors-repair {--after-id=0 : Resume after this artwork id} {--batch=200 : Batch size for resumable fan-out} {--public-only : Repair only public, approved, published artworks} {--stale-hours=0 : Repair only artworks never indexed or older than this many hours}';
|
|
|
|
protected $description = 'Queue resumable vector gateway repair for artworks that already have local embeddings';
|
|
|
|
public function handle(): int
|
|
{
|
|
$afterId = max(0, (int) $this->option('after-id'));
|
|
$batch = max(1, min((int) $this->option('batch'), 1000));
|
|
$publicOnly = (bool) $this->option('public-only');
|
|
$staleHours = max(0, (int) $this->option('stale-hours'));
|
|
|
|
BackfillArtworkVectorIndexJob::dispatch($afterId, $batch, $publicOnly, $staleHours);
|
|
|
|
$this->info('Queued artwork vector repair (after_id=' . $afterId . ', batch=' . $batch . ', public_only=' . ($publicOnly ? 'yes' : 'no') . ', stale_hours=' . $staleHours . ').');
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|