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;
|
namespace App\Jobs;
|
||||||
|
|
||||||
|
use App\Events\PricesUpdatedEvent;
|
||||||
|
use App\Services\FuelPriceService;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Queue\Queueable;
|
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
|
class PollFuelPricesJob implements ShouldQueue
|
||||||
{
|
{
|
||||||
use Queueable;
|
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