
- Simplified the job status retrieval process by consolidating logic into a single `getJobStatus` function. - Removed redundant checks and methods from the `CustomJobRepositoryInterface` and `CustomJobRepository`. - Updated the `getHorizonJobStatus` method in `ApplicationDeploymentQueue` to directly utilize the new `getJobStatus` function. - Enhanced the `isThereAJobInProgress` method to improve clarity and maintainability.
52 lines
1.3 KiB
PHP
52 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Contracts\CustomJobRepositoryInterface;
|
|
use Illuminate\Support\Collection;
|
|
use Laravel\Horizon\Repositories\RedisJobRepository;
|
|
use Laravel\Horizon\Repositories\RedisMasterSupervisorRepository;
|
|
|
|
class CustomJobRepository extends RedisJobRepository implements CustomJobRepositoryInterface
|
|
{
|
|
public function getHorizonWorkers()
|
|
{
|
|
$redisMasterSupervisorRepository = app(RedisMasterSupervisorRepository::class);
|
|
|
|
return $redisMasterSupervisorRepository->all();
|
|
}
|
|
|
|
public function getReservedJobs(): Collection
|
|
{
|
|
return $this->getJobsByStatus('reserved');
|
|
}
|
|
|
|
public function getJobsByStatus(string $status): Collection
|
|
{
|
|
$jobs = new Collection;
|
|
|
|
$this->getRecent()->each(function ($job) use ($jobs, $status) {
|
|
if ($job->status === $status) {
|
|
$jobs->push($job);
|
|
}
|
|
});
|
|
|
|
return $jobs;
|
|
}
|
|
|
|
public function countJobsByStatus(string $status): int
|
|
{
|
|
return $this->getJobsByStatus($status)->count();
|
|
}
|
|
|
|
public function getQueues(): array
|
|
{
|
|
$queues = $this->connection()->keys('queue:*');
|
|
$queues = array_map(function ($queue) {
|
|
return explode(':', $queue)[2];
|
|
}, $queues);
|
|
|
|
return $queues;
|
|
}
|
|
}
|