Path: blob/1.0-develop/app/Services/Nodes/NodeDeletionService.php
10261 views
<?php12namespace Pterodactyl\Services\Nodes;34use Pterodactyl\Models\Node;5use Illuminate\Contracts\Translation\Translator;6use Pterodactyl\Contracts\Repository\NodeRepositoryInterface;7use Pterodactyl\Exceptions\Service\HasActiveServersException;8use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;910class NodeDeletionService11{12/**13* NodeDeletionService constructor.14*/15public function __construct(16protected NodeRepositoryInterface $repository,17protected ServerRepositoryInterface $serverRepository,18protected Translator $translator,19) {20}2122/**23* Delete a node from the panel if no servers are attached to it.24*25* @throws HasActiveServersException26*/27public function handle(int|Node $node): int28{29if ($node instanceof Node) {30$node = $node->id;31}3233$servers = $this->serverRepository->setColumns('id')->findCountWhere([['node_id', '=', $node]]);34if ($servers > 0) {35throw new HasActiveServersException($this->translator->get('exceptions.node.servers_attached'));36}3738return $this->repository->delete($node);39}40}414243