misc_pterodactyl-panel/app/Services/Servers/ReinstallServerService.php
2020-04-03 13:46:45 -07:00

64 lines
1.8 KiB
PHP

<?php
namespace Pterodactyl\Services\Servers;
use Pterodactyl\Models\Server;
use Illuminate\Database\ConnectionInterface;
use Pterodactyl\Repositories\Wings\DaemonServerRepository;
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
class ReinstallServerService
{
/**
* @var \Pterodactyl\Repositories\Wings\DaemonServerRepository
*/
private $daemonServerRepository;
/**
* @var \Illuminate\Database\ConnectionInterface
*/
private $database;
/**
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
*/
private $repository;
/**
* ReinstallService constructor.
*
* @param \Illuminate\Database\ConnectionInterface $database
* @param \Pterodactyl\Repositories\Wings\DaemonServerRepository $daemonServerRepository
* @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
*/
public function __construct(
ConnectionInterface $database,
DaemonServerRepository $daemonServerRepository,
ServerRepositoryInterface $repository
) {
$this->daemonServerRepository = $daemonServerRepository;
$this->database = $database;
$this->repository = $repository;
}
/**
* Reinstall a server on the remote daemon.
*
* @param \Pterodactyl\Models\Server $server
* @return \Pterodactyl\Models\Server
*
* @throws \Throwable
*/
public function reinstall(Server $server)
{
$this->database->transaction(function () use ($server) {
$this->repository->withoutFreshModel()->update($server->id, [
'installed' => Server::STATUS_INSTALLING,
]);
$this->daemonServerRepository->setServer($server)->reinstall();
});
return $server->refresh();
}
}