From e5819497d489e35afe5637bb03cb7076440f28a0 Mon Sep 17 00:00:00 2001 From: Myra Oliveros Date: Mon, 10 Feb 2025 17:09:32 +0800 Subject: [PATCH] Ensure that the status of the export would be updated to Failed if the batch has been cancelled --- src/Export/Jobs/CollateExportsAndUploadToDisk.php | 10 +++++++++- src/Export/Jobs/ExportProcessor.php | 9 ++++++++- src/Export/Jobs/ExportToCsv.php | 6 +++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Export/Jobs/CollateExportsAndUploadToDisk.php b/src/Export/Jobs/CollateExportsAndUploadToDisk.php index 858b149..9f88129 100644 --- a/src/Export/Jobs/CollateExportsAndUploadToDisk.php +++ b/src/Export/Jobs/CollateExportsAndUploadToDisk.php @@ -15,6 +15,7 @@ use Spatie\MediaLibrary\MediaCollections\Exceptions\FileIsTooBig; use Spatie\SimpleExcel\SimpleExcelReader; use Spatie\SimpleExcel\SimpleExcelWriter; +use Throwable; class CollateExportsAndUploadToDisk implements ShouldQueue { @@ -117,4 +118,11 @@ function getFilesSortedByIndex($uuid): array return $filteredFiles; } -} + + public function failed(?Throwable $exception): void + { + $this->export->update([ + 'status' => Status::FAILED->value + ]); + } +} \ No newline at end of file diff --git a/src/Export/Jobs/ExportProcessor.php b/src/Export/Jobs/ExportProcessor.php index b544e30..657f907 100644 --- a/src/Export/Jobs/ExportProcessor.php +++ b/src/Export/Jobs/ExportProcessor.php @@ -102,6 +102,13 @@ public function handle(): void "failedJobs" => $batch->failedJobs, ]); }) + ->finally(function (Batch $batch) use ($export) { + if ($batch->cancelled()) { + $export->update([ + 'status' => Status::FAILED->value + ]); + } + }) ->allowFailures($this->allowFailures()) ->name($this->name()) ->onQueue(self::queueName()) @@ -193,4 +200,4 @@ protected function getQueryCount(): int { return $this->query()->count(); } -} +} \ No newline at end of file diff --git a/src/Export/Jobs/ExportToCsv.php b/src/Export/Jobs/ExportToCsv.php index 2bab6cf..864c48d 100644 --- a/src/Export/Jobs/ExportToCsv.php +++ b/src/Export/Jobs/ExportToCsv.php @@ -33,6 +33,10 @@ public function __construct( */ public function handle(): void { + if ($this->batch()->cancelled()) { + return; + } + $items = $this->processor->query() ->lazy() ->forPage($this->page, $this->perPage); @@ -72,4 +76,4 @@ protected function storagePath($path = ''): string return storage_path('app/temp/' . trim($path, '/')); } -} +} \ No newline at end of file