Path: blob/1.0-develop/app/Http/Requests/Api/Application/Servers/Databases/StoreServerDatabaseRequest.php
10283 views
<?php12namespace Pterodactyl\Http\Requests\Api\Application\Servers\Databases;34use Webmozart\Assert\Assert;5use Pterodactyl\Models\Server;6use Illuminate\Validation\Rule;7use Illuminate\Database\Query\Builder;8use Pterodactyl\Services\Acl\Api\AdminAcl;9use Pterodactyl\Services\Databases\DatabaseManagementService;10use Pterodactyl\Http\Requests\Api\Application\ApplicationApiRequest;1112class StoreServerDatabaseRequest extends ApplicationApiRequest13{14protected ?string $resource = AdminAcl::RESOURCE_SERVER_DATABASES;1516protected int $permission = AdminAcl::WRITE;1718/**19* Validation rules for database creation.20*/21public function rules(): array22{23$server = $this->parameter('server', Server::class);2425return [26'database' => [27'required',28'alpha_dash',29'min:1',30'max:48',31Rule::unique('databases')->where(function (Builder $query) use ($server) {32$query->where('server_id', $server->id)->where('database', $this->databaseName());33}),34],35'remote' => 'required|string|regex:/^[0-9%.]{1,15}$/',36'host' => 'required|integer|exists:database_hosts,id',37];38}3940/**41* Return data formatted in the correct format for the service to consume.42*/43public function validated($key = null, $default = null): array44{45return [46'database' => $this->input('database'),47'remote' => $this->input('remote'),48'database_host_id' => $this->input('host'),49];50}5152/**53* Format error messages in a more understandable format for API output.54*/55public function attributes(): array56{57return [58'host' => 'Database Host Server ID',59'remote' => 'Remote Connection String',60'database' => 'Database Name',61];62}6364/**65* Returns the database name in the expected format.66*/67public function databaseName(): string68{69$server = $this->route()->parameter('server');7071Assert::isInstanceOf($server, Server::class);7273return DatabaseManagementService::generateUniqueDatabaseName($this->input('database'), $server->id);74}75}767778