Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Services/Nodes/NodeDeletionService.php
10261 views
1
<?php
2
3
namespace Pterodactyl\Services\Nodes;
4
5
use Pterodactyl\Models\Node;
6
use Illuminate\Contracts\Translation\Translator;
7
use Pterodactyl\Contracts\Repository\NodeRepositoryInterface;
8
use Pterodactyl\Exceptions\Service\HasActiveServersException;
9
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
10
11
class NodeDeletionService
12
{
13
/**
14
* NodeDeletionService constructor.
15
*/
16
public function __construct(
17
protected NodeRepositoryInterface $repository,
18
protected ServerRepositoryInterface $serverRepository,
19
protected Translator $translator,
20
) {
21
}
22
23
/**
24
* Delete a node from the panel if no servers are attached to it.
25
*
26
* @throws HasActiveServersException
27
*/
28
public function handle(int|Node $node): int
29
{
30
if ($node instanceof Node) {
31
$node = $node->id;
32
}
33
34
$servers = $this->serverRepository->setColumns('id')->findCountWhere([['node_id', '=', $node]]);
35
if ($servers > 0) {
36
throw new HasActiveServersException($this->translator->get('exceptions.node.servers_attached'));
37
}
38
39
return $this->repository->delete($node);
40
}
41
}
42
43