Skip to content

Commit 46f78b6

Browse files
Dispatch job from batches
2 parents 4a9ea4f + 8397555 commit 46f78b6

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

src/Actions/WarmUrls.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace JustBetter\StaticCacheWarmer\Actions;
44

5+
use Illuminate\Support\Facades\Bus;
56
use JustBetter\StaticCacheWarmer\Contracts\WarmsUrls;
67
use JustBetter\StaticCacheWarmer\Jobs\WarmUrlJob;
78
use Statamic\Eloquent\Entries\EntryQueryBuilder;
@@ -16,8 +17,13 @@ public function warm(): void
1617

1718
$entries = $query->whereNotNull('uri')->lazy();
1819

20+
$jobs = [];
1921
foreach ($entries as $entry) {
20-
WarmUrlJob::dispatch($entry->absoluteUrl());
22+
$jobs[] = new WarmUrlJob($entry->absoluteUrl());
23+
}
24+
25+
if (! empty($jobs)) {
26+
Bus::batch($jobs)->dispatchAfterResponse();
2127
}
2228
}
2329

src/Jobs/WarmUrlJob.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
namespace JustBetter\StaticCacheWarmer\Jobs;
44

5+
use Illuminate\Bus\Batchable;
56
use Illuminate\Contracts\Queue\ShouldBeUnique;
67
use Illuminate\Contracts\Queue\ShouldQueue;
78
use Illuminate\Foundation\Queue\Queueable;
89
use JustBetter\StaticCacheWarmer\Contracts\WarmsUrl;
910

1011
class WarmUrlJob implements ShouldBeUnique, ShouldQueue
1112
{
12-
use Queueable;
13+
use Batchable, Queueable;
1314

1415
public function __construct(protected string $url)
1516
{

tests/Actions/WarmUrlsTest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
class WarmUrlsTest extends TestCase
1515
{
1616
#[Test]
17-
public function it_can_dispatch_jobs(): void
17+
public function it_can_dispatch_jobs_in_batch(): void
1818
{
1919
Bus::fake();
2020

@@ -34,6 +34,9 @@ public function it_can_dispatch_jobs(): void
3434

3535
$action->warm();
3636

37-
Bus::assertDispatched(WarmUrlJob::class);
37+
Bus::assertBatched(function ($batch) {
38+
return $batch->jobs->count() > 0
39+
&& $batch->jobs->first() instanceof WarmUrlJob;
40+
});
3841
}
3942
}

0 commit comments

Comments
 (0)