Skip to content

Commit f7b8916

Browse files
Modified the automatic job tracking logic (still far from perfect :/ )
1 parent 01ff2a3 commit f7b8916

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

src/JobTracker.php

+5
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,11 @@ public function logs(): Collection
181181
return $this->model()?->getLogs() ?? collect();
182182
}
183183

184+
public function hasExecutionEntry(): bool
185+
{
186+
return null !== $this->model();
187+
}
188+
184189
protected static function commonFields(TrackableJob $job): array
185190
{
186191
[$via, $scene] = static::sceneResolver()->get();

src/Listeners/StartJobTracking.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,17 @@ class StartJobTracking
1212
{
1313
public function handle(JobQueueing $event)
1414
{
15-
if ($event->job instanceof TrackableJob && $event->job->doesNotHaveTrackingIdYet()) {
16-
$event->job->generateJobTrackingId();
17-
JobTracker::createFor($event->job);
15+
if (!$event->job instanceof TrackableJob) {
16+
return;
17+
}
18+
19+
if ($event->job->doesNotHaveTrackingIdYet()) {
20+
$event->job->generateJobTrackingId(); // In fact, it's not the best idea, because it won't be saved to the payload
21+
}
22+
23+
if (!JobTracker::of($event->job)->hasExecutionEntry()) {
24+
$tracker = JobTracker::createFor($event->job);
25+
$tracker->logInfo(__('The job has been queued'));
1826
}
1927
}
2028
}

src/Providers/EventServiceProvider.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
namespace Konekt\History\Providers;
66

77
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
8-
use Illuminate\Queue\Events\JobQueueing;
8+
use Illuminate\Queue\Events\JobQueued;
99
use Konekt\History\Listeners\StartJobTracking;
1010

1111
class EventServiceProvider extends ServiceProvider
1212
{
1313
protected $listen = [
14-
JobQueueing::class => [
14+
JobQueued::class => [
1515
StartJobTracking::class,
1616
],
1717
];

tests/JobTrackerTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace Konekt\History\Tests;
66

77
use Illuminate\Contracts\Auth\Authenticatable;
8-
use Illuminate\Queue\Events\JobQueueing;
8+
use Illuminate\Queue\Events\JobQueued;
99
use Illuminate\Support\Carbon;
1010
use Illuminate\Support\Facades\Auth;
1111
use Illuminate\Support\Facades\Bus;
@@ -142,7 +142,7 @@ public function the_start_job_tracking_listener_is_active()
142142
// and that the tracking id was initialized correctly
143143
// but during tests queue listeners aren't invoked
144144
Event::fake();
145-
Event::assertListening(JobQueueing::class, StartJobTracking::class);
145+
Event::assertListening(JobQueued::class, StartJobTracking::class);
146146
}
147147

148148
/** @test */

0 commit comments

Comments
 (0)