diff --git a/app/Console/Commands/Test/TestJobCommand.php b/app/Console/Commands/Test/TestJobCommand.php index c4e3d1a9..936b63f6 100644 --- a/app/Console/Commands/Test/TestJobCommand.php +++ b/app/Console/Commands/Test/TestJobCommand.php @@ -15,7 +15,7 @@ class TestJobCommand extends Command * * @var string */ - protected $signature = 'test:job'; + protected $signature = 'test:job {--fail}'; /** * The console command description. @@ -30,7 +30,9 @@ class TestJobCommand extends Command public function handle(): int { $user = User::firstOrFail(); - TestJob::dispatch($user, 'Test job message.'); + $fail = (bool) $this->option('fail'); + + TestJob::dispatch($user, 'Test job message.', $fail); return self::SUCCESS; } diff --git a/app/Jobs/Test/TestJob.php b/app/Jobs/Test/TestJob.php index a0eb39a4..e93187d7 100644 --- a/app/Jobs/Test/TestJob.php +++ b/app/Jobs/Test/TestJob.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Jobs\Test; use App\Models\User; +use Exception; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -22,23 +23,29 @@ class TestJob implements ShouldQueue private User $user; private string $message; + private bool $fail; /** * Create a new job instance. */ - public function __construct(User $user, string $message) + public function __construct(User $user, string $message, bool $fail = false) { $this->user = $user; $this->message = $message; + $this->fail = $fail; } /** * Execute the job. + * @throws Exception */ public function handle(): void { Log::debug('TestJob: '.$this->message, [ 'user' => $this->user->getKey(), ]); + if ($this->fail) { + throw new Exception('TestJob failed.'); + } } } diff --git a/database/migrations/2024_07_03_145445_change_data_type_of_id_column_in_failed_jobs_table.php b/database/migrations/2024_07_03_145445_change_data_type_of_id_column_in_failed_jobs_table.php new file mode 100644 index 00000000..1ed9bdab --- /dev/null +++ b/database/migrations/2024_07_03_145445_change_data_type_of_id_column_in_failed_jobs_table.php @@ -0,0 +1,38 @@ +truncate(); + Schema::table('failed_jobs', function (Blueprint $table): void { + $table->dropColumn('id'); + }); + Schema::table('failed_jobs', function (Blueprint $table): void { + $table->id(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('failed_jobs')->truncate(); + Schema::table('failed_jobs', function (Blueprint $table): void { + $table->dropColumn('id'); + }); + Schema::table('failed_jobs', function (Blueprint $table): void { + $table->uuid('id')->primary(); + }); + } +};