mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-21 10:51:36 +00:00
57 lines
1.8 KiB
PHP
57 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Actions\Queue;
|
|
|
|
use App\Enums\QueueStatus;
|
|
use App\Models\Queue;
|
|
use App\Models\Service;
|
|
use App\SSH\Services\ProcessManager\ProcessManager;
|
|
|
|
class ManageQueue
|
|
{
|
|
public function start(Queue $queue): void
|
|
{
|
|
$queue->status = QueueStatus::STARTING;
|
|
$queue->save();
|
|
dispatch(function () use ($queue): void {
|
|
/** @var Service $service */
|
|
$service = $queue->server->processManager();
|
|
/** @var ProcessManager $handler */
|
|
$handler = $service->handler();
|
|
$handler->start($queue->id, $queue->site_id);
|
|
$queue->status = QueueStatus::RUNNING;
|
|
$queue->save();
|
|
})->onConnection('ssh');
|
|
}
|
|
|
|
public function stop(Queue $queue): void
|
|
{
|
|
$queue->status = QueueStatus::STOPPING;
|
|
$queue->save();
|
|
dispatch(function () use ($queue): void {
|
|
/** @var Service $service */
|
|
$service = $queue->server->processManager();
|
|
/** @var ProcessManager $handler */
|
|
$handler = $service->handler();
|
|
$handler->stop($queue->id, $queue->site_id);
|
|
$queue->status = QueueStatus::STOPPED;
|
|
$queue->save();
|
|
})->onConnection('ssh');
|
|
}
|
|
|
|
public function restart(Queue $queue): void
|
|
{
|
|
$queue->status = QueueStatus::RESTARTING;
|
|
$queue->save();
|
|
dispatch(function () use ($queue): void {
|
|
/** @var Service $service */
|
|
$service = $queue->server->processManager();
|
|
/** @var ProcessManager $handler */
|
|
$handler = $service->handler();
|
|
$handler->restart($queue->id, $queue->site_id);
|
|
$queue->status = QueueStatus::RUNNING;
|
|
$queue->save();
|
|
})->onConnection('ssh');
|
|
}
|
|
}
|