refactor: PollFuelPricesJob calls service directly
Audit item #11. The job was a one-line Artisan::call wrapper around fuel:poll --full. Routing through Artisan adds output buffering and swallows typed exceptions before they reach the queue's failed-job handler. Now injects FuelPriceService and replicates the --full path (refreshStations + pollPrices + PricesUpdatedEvent) directly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,16 +2,26 @@
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Events\PricesUpdatedEvent;
|
||||
use App\Services\FuelPriceService;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
|
||||
/**
|
||||
* Background full station refresh + price poll, dispatched from the admin
|
||||
* "Trigger Full Poll" button. Mirrors the `fuel:poll --full` command but
|
||||
* calls the service directly so typed exceptions surface to the queue's
|
||||
* failed-job handler instead of being swallowed by Artisan output buffering.
|
||||
*/
|
||||
class PollFuelPricesJob implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
public function handle(): void
|
||||
public function handle(FuelPriceService $service): void
|
||||
{
|
||||
Artisan::call('fuel:poll', ['--full' => true]);
|
||||
$service->refreshStations();
|
||||
$inserted = $service->pollPrices();
|
||||
|
||||
PricesUpdatedEvent::dispatch($inserted, true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user