<?php

declare(strict_types=1);

namespace App\Framework\Queue\Events;

use App\Framework\Core\ValueObjects\Timestamp;
use App\Framework\Queue\ValueObjects\ChainExecutionMode;

final readonly class JobChainStartedEvent
{
    public Timestamp $timestamp;

    public function __construct(
        public string $chainId,
        public string $name,
        public ChainExecutionMode $executionMode,
        public array $jobIds,
        ?Timestamp $timestamp = null
    ) {
        $this->timestamp = $timestamp ?? Timestamp::now();
    }

    public function getEventData(): array
    {
        return [
            'event_type' => 'job_chain_started',
            'chain_id' => $this->chainId,
            'name' => $this->name,
            'execution_mode' => $this->executionMode->value,
            'job_ids' => $this->jobIds,
            'job_count' => count($this->jobIds),
            'timestamp' => $this->timestamp->toFloat(),
        ];
    }
}
