Files
coolify/app/Repositories/CustomJobRepository.php
Andras Bacsai 7582d7dd8b refactor: streamline job status retrieval and clean up repository interface
- 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.
2025-01-10 19:53:13 +01:00

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;
}
}