Path: blob/1.0-develop/app/Http/Controllers/Api/Application/Servers/DatabaseController.php
10277 views
<?php12namespace Pterodactyl\Http\Controllers\Api\Application\Servers;34use Illuminate\Http\Response;5use Pterodactyl\Models\Server;6use Pterodactyl\Models\Database;7use Illuminate\Http\JsonResponse;8use Pterodactyl\Services\Databases\DatabasePasswordService;9use Pterodactyl\Services\Databases\DatabaseManagementService;10use Pterodactyl\Transformers\Api\Application\ServerDatabaseTransformer;11use Pterodactyl\Http\Controllers\Api\Application\ApplicationApiController;12use Pterodactyl\Http\Requests\Api\Application\Servers\Databases\GetServerDatabaseRequest;13use Pterodactyl\Http\Requests\Api\Application\Servers\Databases\GetServerDatabasesRequest;14use Pterodactyl\Http\Requests\Api\Application\Servers\Databases\ServerDatabaseWriteRequest;15use Pterodactyl\Http\Requests\Api\Application\Servers\Databases\StoreServerDatabaseRequest;1617class DatabaseController extends ApplicationApiController18{19/**20* DatabaseController constructor.21*/22public function __construct(23private DatabaseManagementService $databaseManagementService,24private DatabasePasswordService $databasePasswordService,25) {26parent::__construct();27}2829/**30* Return a listing of all databases currently available to a single31* server.32*/33public function index(GetServerDatabasesRequest $request, Server $server): array34{35return $this->fractal->collection($server->databases)36->transformWith($this->getTransformer(ServerDatabaseTransformer::class))37->toArray();38}3940/**41* Return a single server database.42*/43public function view(GetServerDatabaseRequest $request, Server $server, Database $database): array44{45return $this->fractal->item($database)46->transformWith($this->getTransformer(ServerDatabaseTransformer::class))47->toArray();48}4950/**51* Reset the password for a specific server database.52*53* @throws \Throwable54*/55public function resetPassword(ServerDatabaseWriteRequest $request, Server $server, Database $database): JsonResponse56{57$this->databasePasswordService->handle($database);5859return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT);60}6162/**63* Create a new database on the Panel for a given server.64*65* @throws \Throwable66*/67public function store(StoreServerDatabaseRequest $request, Server $server): JsonResponse68{69$database = $this->databaseManagementService->create($server, array_merge($request->validated(), [70'database' => $request->databaseName(),71]));7273return $this->fractal->item($database)74->transformWith($this->getTransformer(ServerDatabaseTransformer::class))75->addMeta([76'resource' => route('api.application.servers.databases.view', [77'server' => $server->id,78'database' => $database->id,79]),80])81->respond(Response::HTTP_CREATED);82}8384/**85* Handle a request to delete a specific server database from the Panel.86*/87public function delete(ServerDatabaseWriteRequest $request, Server $server, Database $database): Response88{89$this->databaseManagementService->delete($database);9091return response('', 204);92}93}949596