Files
panel/app/Http/Controllers/Admin/Nodes/NodeController.php
2022-08-21 20:01:15 +00:00

71 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Nodes;
use App\Http\Controllers\ApplicationApiController;
use App\Http\Requests\Admin\Nodes\Settings\UpdateNodeRequest;
use App\Http\Requests\Admin\Nodes\StoreNodeRequest;
use App\Models\Node;
use App\Transformers\Application\NodeTransformer;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Spatie\QueryBuilder\QueryBuilder;
class NodeController extends ApplicationApiController
{
public function index()
{
return Inertia::render('admin/nodes/Index', ['nodes' => Node::all()]);
}
public function create()
{
return Inertia::render('admin/nodes/Create');
}
public function show(Node $node)
{
return Inertia::render('admin/nodes/Show', [
'node' => $node
]);
}
public function store(StoreNodeRequest $request)
{
$node = Node::create($request->validated());
return redirect()->route('admin.nodes.show', [$node->id]);
}
public function search(Request $request)
{
$nodes = QueryBuilder::for(Node::query())
->allowedFilters(['name', 'cluster', 'hostname', 'port'])
->allowedSorts(['id'])
->paginate($request->query('per_page') ?? 50);
return fractal($nodes, new NodeTransformer())->respond();
}
public function update(Node $node, UpdateNodeRequest $request)
{
$payload = $request->safe()->except(['token_id', 'secret']);
if (isset($request->token_id))
$payload['token_id'] = $request->safe()->only(['token_id']);
if (isset($request->secret))
$payload['secret'] = $request->safe()->only(['secret']);
$node->update($payload);
return back();
}
public function destroy(Node $node)
{
$node->delete();
return back();
}
}