Skip to content

Commit d8c338d

Browse files
committed
Update all remaining code pathways to use new search tooling
1 parent 12fe3f1 commit d8c338d

File tree

14 files changed

+54
-305
lines changed

14 files changed

+54
-305
lines changed

app/Console/Commands/User/DeleteUserCommand.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace Pterodactyl\Console\Commands\User;
1111

1212
use Webmozart\Assert\Assert;
13+
use Pterodactyl\Models\User;
1314
use Illuminate\Console\Command;
1415
use Pterodactyl\Services\Users\UserDeletionService;
1516
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
@@ -40,16 +41,11 @@ class DeleteUserCommand extends Command
4041
* DeleteUserCommand constructor.
4142
*
4243
* @param \Pterodactyl\Services\Users\UserDeletionService $deletionService
43-
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
4444
*/
45-
public function __construct(
46-
UserDeletionService $deletionService,
47-
UserRepositoryInterface $repository
48-
) {
45+
public function __construct(UserDeletionService $deletionService) {
4946
parent::__construct();
5047

5148
$this->deletionService = $deletionService;
52-
$this->repository = $repository;
5349
}
5450

5551
/**
@@ -59,9 +55,13 @@ public function __construct(
5955
public function handle()
6056
{
6157
$search = $this->option('user') ?? $this->ask(trans('command/messages.user.search_users'));
62-
Assert::notEmpty($search, 'Search term must be a non-null value, received %s.');
58+
Assert::notEmpty($search, 'Search term should be an email address, got: %s.');
59+
60+
$results = User::query()
61+
->where('email', 'LIKE', "$search%")
62+
->where('username', 'LIKE', "$search%")
63+
->get();
6364

64-
$results = $this->repository->setSearchTerm($search)->all();
6565
if (count($results) < 1) {
6666
$this->error(trans('command/messages.user.no_users_found'));
6767
if ($this->input->isInteractive()) {
@@ -95,5 +95,7 @@ public function handle()
9595
$this->deletionService->handle($deleteUser);
9696
$this->info(trans('command/messages.user.deleted'));
9797
}
98+
99+
return;
98100
}
99101
}

app/Contracts/Repository/NodeRepositoryInterface.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@ public function getUsageStats(Node $node): array;
2929
*/
3030
public function getUsageStatsRaw(Node $node): array;
3131

32-
/**
33-
* Return all available nodes with a searchable interface.
34-
*
35-
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
36-
*/
37-
public function getNodeListingData(): LengthAwarePaginator;
38-
3932
/**
4033
* Return a single node with location and server information.
4134
*

app/Contracts/Repository/ServerRepositoryInterface.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@
88

99
interface ServerRepositoryInterface extends RepositoryInterface
1010
{
11-
/**
12-
* Returns a listing of all servers that exist including relationships.
13-
*
14-
* @param int $paginate
15-
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
16-
*/
17-
public function getAllServers(int $paginate): LengthAwarePaginator;
18-
1911
/**
2012
* Load the egg relations onto the server model.
2113
*

app/Contracts/Repository/UserRepositoryInterface.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@
88

99
interface UserRepositoryInterface extends RepositoryInterface
1010
{
11-
/**
12-
* Return all users with counts of servers and subusers of servers.
13-
*
14-
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
15-
*/
16-
public function getAllUsersWithCounts(): LengthAwarePaginator;
17-
1811
/**
1912
* Return all matching models for a user in a format that can be used for dropdowns.
2013
*

app/Http/Controllers/Admin/Nodes/NodeController.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Pterodactyl\Http\Controllers\Admin\Nodes;
44

55
use Illuminate\Http\Request;
6+
use Pterodactyl\Models\Node;
7+
use Spatie\QueryBuilder\QueryBuilder;
68
use Illuminate\Contracts\View\Factory;
79
use Pterodactyl\Http\Controllers\Controller;
810
use Pterodactyl\Repositories\Eloquent\NodeRepository;
@@ -39,10 +41,13 @@ public function __construct(NodeRepository $repository, Factory $view)
3941
*/
4042
public function index(Request $request)
4143
{
42-
$nodes = $this->repository
43-
->setSearchTerm($request->input('query'))
44-
->getNodeListingData();
44+
$nodes = QueryBuilder::for(
45+
Node::query()->with('location')->withCount('servers')
46+
)
47+
->allowedFilters(['uuid', 'name'])
48+
->allowedSorts(['id'])
49+
->paginate(25);
4550

46-
return $this->view->make('admin.nodes.index', compact('nodes'));
51+
return $this->view->make('admin.nodes.index', ['nodes' => $nodes]);
4752
}
4853
}

app/Http/Controllers/Admin/Servers/ServerController.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Pterodactyl\Http\Controllers\Admin\Servers;
44

55
use Illuminate\Http\Request;
6+
use Pterodactyl\Models\Server;
7+
use Spatie\QueryBuilder\QueryBuilder;
68
use Illuminate\Contracts\View\Factory;
79
use Pterodactyl\Http\Controllers\Controller;
810
use Pterodactyl\Repositories\Eloquent\ServerRepository;
@@ -42,10 +44,11 @@ public function __construct(
4244
*/
4345
public function index(Request $request)
4446
{
45-
return $this->view->make('admin.servers.index', [
46-
'servers' => $this->repository->setSearchTerm($request->input('query'))->getAllServers(
47-
config()->get('pterodactyl.paginate.admin.servers')
48-
),
49-
]);
47+
$servers = QueryBuilder::for(Server::query()->with('node', 'user', 'allocation'))
48+
->allowedIncludes(['uuid', 'name', 'image'])
49+
->allowedSorts(['id', 'uuid'])
50+
->paginate(config()->get('pterodactyl.paginate.admin.servers'));
51+
52+
return $this->view->make('admin.servers.index', ['servers' => $servers]);
5053
}
5154
}

app/Http/Controllers/Admin/UserController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Http\Request;
66
use Pterodactyl\Models\User;
77
use Prologue\Alerts\AlertsMessageBag;
8+
use Spatie\QueryBuilder\QueryBuilder;
89
use Pterodactyl\Exceptions\DisplayException;
910
use Pterodactyl\Http\Controllers\Controller;
1011
use Illuminate\Contracts\Translation\Translator;
@@ -83,7 +84,10 @@ public function __construct(
8384
*/
8485
public function index(Request $request)
8586
{
86-
$users = $this->repository->setSearchTerm($request->input('query'))->getAllUsersWithCounts();
87+
$users = QueryBuilder::for(User::query()->withCount('servers'))
88+
->allowedIncludes(['username', 'email', 'uuid'])
89+
->allowedSorts(['id', 'uuid'])
90+
->paginate(50);
8791

8892
return view('admin.users.index', ['users' => $users]);
8993
}

app/Http/Controllers/Api/Application/Nodes/NodeController.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
namespace Pterodactyl\Http\Controllers\Api\Application\Nodes;
44

55
use Pterodactyl\Models\Node;
6-
use Illuminate\Http\Response;
76
use Illuminate\Http\JsonResponse;
7+
use Spatie\QueryBuilder\QueryBuilder;
88
use Pterodactyl\Services\Nodes\NodeUpdateService;
99
use Pterodactyl\Services\Nodes\NodeCreationService;
1010
use Pterodactyl\Services\Nodes\NodeDeletionService;
@@ -69,7 +69,10 @@ public function __construct(
6969
*/
7070
public function index(GetNodesRequest $request): array
7171
{
72-
$nodes = $this->repository->setSearchTerm($request->input('search'))->paginated(50);
72+
$nodes = QueryBuilder::for(Node::query())
73+
->allowedFilters(['uuid', 'name', 'fqdn', 'daemon_token_id'])
74+
->allowedSorts(['id', 'uuid', 'memory', 'disk'])
75+
->paginate(100);
7376

7477
return $this->fractal->collection($nodes)
7578
->transformWith($this->getTransformer(NodeTransformer::class))
@@ -80,11 +83,12 @@ public function index(GetNodesRequest $request): array
8083
* Return data for a single instance of a node.
8184
*
8285
* @param \Pterodactyl\Http\Requests\Api\Application\Nodes\GetNodeRequest $request
86+
* @param \Pterodactyl\Models\Node $node
8387
* @return array
8488
*/
85-
public function view(GetNodeRequest $request): array
89+
public function view(GetNodeRequest $request, Node $node): array
8690
{
87-
return $this->fractal->item($request->getModel(Node::class))
91+
return $this->fractal->item($node)
8892
->transformWith($this->getTransformer(NodeTransformer::class))
8993
->toArray();
9094
}
@@ -116,16 +120,15 @@ public function store(StoreNodeRequest $request): JsonResponse
116120
* Update an existing node on the Panel.
117121
*
118122
* @param \Pterodactyl\Http\Requests\Api\Application\Nodes\UpdateNodeRequest $request
123+
* @param \Pterodactyl\Models\Node $node
119124
* @return array
120125
*
121-
* @throws \Pterodactyl\Exceptions\DisplayException
122-
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
123-
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
126+
* @throws \Throwable
124127
*/
125-
public function update(UpdateNodeRequest $request): array
128+
public function update(UpdateNodeRequest $request, Node $node): array
126129
{
127130
$node = $this->updateService->handle(
128-
$request->getModel(Node::class), $request->validated(), $request->input('reset_secret') === true
131+
$node, $request->validated(), $request->input('reset_secret') === true
129132
);
130133

131134
return $this->fractal->item($node)
@@ -138,14 +141,15 @@ public function update(UpdateNodeRequest $request): array
138141
* currently attached to it.
139142
*
140143
* @param \Pterodactyl\Http\Requests\Api\Application\Nodes\DeleteNodeRequest $request
141-
* @return \Illuminate\Http\Response
144+
* @param \Pterodactyl\Models\Node $node
145+
* @return \Illuminate\Http\JsonResponse
142146
*
143147
* @throws \Pterodactyl\Exceptions\Service\HasActiveServersException
144148
*/
145-
public function delete(DeleteNodeRequest $request): Response
149+
public function delete(DeleteNodeRequest $request, Node $node): JsonResponse
146150
{
147-
$this->deletionService->handle($request->getModel(Node::class));
151+
$this->deletionService->handle($node);
148152

149-
return response('', 204);
153+
return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT);
150154
}
151155
}

app/Http/Controllers/Api/Application/Servers/ServerController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Http\Response;
66
use Pterodactyl\Models\Server;
77
use Illuminate\Http\JsonResponse;
8+
use Spatie\QueryBuilder\QueryBuilder;
89
use Pterodactyl\Services\Servers\ServerCreationService;
910
use Pterodactyl\Services\Servers\ServerDeletionService;
1011
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
@@ -59,7 +60,10 @@ public function __construct(
5960
*/
6061
public function index(GetServersRequest $request): array
6162
{
62-
$servers = $this->repository->setSearchTerm($request->input('search'))->paginated(50);
63+
$servers = QueryBuilder::for(Server::query())
64+
->allowedFilters(['uuid', 'name', 'image', 'external_id'])
65+
->allowedSorts(['id', 'uuid'])
66+
->paginate(100);
6367

6468
return $this->fractal->collection($servers)
6569
->transformWith($this->getTransformer(ServerTransformer::class))

app/Repositories/Concerns/Searchable.php

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)