Path: blob/1.0-develop/app/Http/Requests/Api/Client/Servers/Databases/StoreDatabaseRequest.php
10283 views
<?php12namespace Pterodactyl\Http\Requests\Api\Client\Servers\Databases;34use Webmozart\Assert\Assert;5use Pterodactyl\Models\Server;6use Illuminate\Validation\Rule;7use Pterodactyl\Models\Database;8use Pterodactyl\Models\Permission;9use Illuminate\Database\Query\Builder;10use Pterodactyl\Contracts\Http\ClientPermissionsRequest;11use Pterodactyl\Http\Requests\Api\Client\ClientApiRequest;12use Pterodactyl\Services\Databases\DatabaseManagementService;1314class StoreDatabaseRequest extends ClientApiRequest implements ClientPermissionsRequest15{16public function permission(): string17{18return Permission::ACTION_DATABASE_CREATE;19}2021public function rules(): array22{23$server = $this->route()->parameter('server');2425Assert::isInstanceOf($server, Server::class);2627return [28'database' => [29'required',30'alpha_dash',31'min:3',32'max:48',33// Yes, I am aware that you could have the same database name across two unique hosts. However,34// I don't really care about that for this validation. We just want to make sure it is unique to35// the server itself. No need for complexity.36Rule::unique('databases')->where(function (Builder $query) use ($server) {37$query->where('server_id', $server->id)38->where('database', DatabaseManagementService::generateUniqueDatabaseName($this->input('database'), $server->id));39}),40],41'remote' => Database::getRulesForField('remote'),42];43}4445public function messages(): array46{47return [48'database.unique' => 'The database name you have selected is already in use by this server.',49];50}51}525354