<?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;
    }
}
