diff --git a/src/Commands/QueueFailedCommand.php b/src/Commands/QueueFailedCommand.php new file mode 100644 index 0000000..bc3e9b0 --- /dev/null +++ b/src/Commands/QueueFailedCommand.php @@ -0,0 +1,67 @@ +get(); + + if ($failedJobs->isEmpty()) { + $this->info("No failed jobs found."); + return Command::SUCCESS; + } + + // Create table + $table = $this->createTable(); + $table->setHeaders(['ID', 'Job', 'Queue', 'Failed At']); + + foreach ($failedJobs as $job) { + $payload = $job->payload; + $data = unserialize($payload); + + $jobClass = null; + if ($data && isset($data['job']) && is_object($data['job'])) { + $jobClass = get_class($data['job']); + } + + $failedAt = date('Y-m-d H:i:s', $job->failed_at); + $table->addRow([ + $job->id, + $jobClass, + $job->queue, + $failedAt + ]); + } + + // Render table + $table->render(); + + return Command::SUCCESS; + } +} diff --git a/src/QueueServiceProvider.php b/src/QueueServiceProvider.php index dec7060..c11877e 100644 --- a/src/QueueServiceProvider.php +++ b/src/QueueServiceProvider.php @@ -2,12 +2,13 @@ namespace Doppar\Queue; -use Doppar\Queue\Commands\MakeJobCommand; -use Doppar\Queue\Commands\QueueFlushCommand; use Phaseolies\Providers\ServiceProvider; use Doppar\Queue\QueueManager; use Doppar\Queue\Commands\QueueRunCommand; use Doppar\Queue\Commands\QueueRetryCommand; +use Doppar\Queue\Commands\QueueFlushCommand; +use Doppar\Queue\Commands\QueueFailedCommand; +use Doppar\Queue\Commands\MakeJobCommand; class QueueServiceProvider extends ServiceProvider { @@ -38,7 +39,8 @@ public function boot(): void QueueRunCommand::class, QueueRetryCommand::class, MakeJobCommand::class, - QueueFlushCommand::class + QueueFlushCommand::class, + QueueFailedCommand::class ]); } }