From f216e612c0c671010612563bed363e3dd7875f2b Mon Sep 17 00:00:00 2001 From: sardin Date: Thu, 26 Jun 2025 10:08:27 +0200 Subject: [PATCH] Add access to JobExecution in callback processor --- src/batch/src/Job/Item/Processor/CallbackProcessor.php | 8 ++++++-- .../tests/Job/Item/Processor/CallbackProcessorTest.php | 10 ++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/batch/src/Job/Item/Processor/CallbackProcessor.php b/src/batch/src/Job/Item/Processor/CallbackProcessor.php index 6830d770..f4fdb03d 100644 --- a/src/batch/src/Job/Item/Processor/CallbackProcessor.php +++ b/src/batch/src/Job/Item/Processor/CallbackProcessor.php @@ -6,13 +6,17 @@ use Closure; use Yokai\Batch\Job\Item\ItemProcessorInterface; +use Yokai\Batch\Job\JobExecutionAwareInterface; +use Yokai\Batch\Job\JobExecutionAwareTrait; /** * This {@see ItemProcessorInterface} will transform every item * with a closure provided at object's construction. */ -final class CallbackProcessor implements ItemProcessorInterface +final class CallbackProcessor implements ItemProcessorInterface, JobExecutionAwareInterface { + use JobExecutionAwareTrait; + public function __construct( private Closure $callback, ) { @@ -20,6 +24,6 @@ public function __construct( public function process(mixed $item): mixed { - return ($this->callback)($item); + return ($this->callback)($item, $this->jobExecution); } } diff --git a/src/batch/tests/Job/Item/Processor/CallbackProcessorTest.php b/src/batch/tests/Job/Item/Processor/CallbackProcessorTest.php index 530dd898..dcf0f868 100644 --- a/src/batch/tests/Job/Item/Processor/CallbackProcessorTest.php +++ b/src/batch/tests/Job/Item/Processor/CallbackProcessorTest.php @@ -6,14 +6,16 @@ use PHPUnit\Framework\TestCase; use Yokai\Batch\Job\Item\Processor\CallbackProcessor; +use Yokai\Batch\JobExecution; class CallbackProcessorTest extends TestCase { public function testProcess(): void { - $processor = new CallbackProcessor(fn($item) => \mb_strtolower($item)); - - self::assertSame('john', $processor->process('John')); - self::assertSame('doe', $processor->process('DOE')); + $processor = new CallbackProcessor(fn($item, JobExecution $jobExecution) + => \mb_strtolower($item . '-' . $jobExecution->getJobName())); + $processor->setJobExecution(JobExecution::createRoot(id: '123', jobName: 'test')); + self::assertSame('john-test', $processor->process('John')); + self::assertSame('doe-test', $processor->process('DOE')); } }