route()->parameter('server'); return [ 'database' => [ 'required', 'alpha_dash', 'min:1', 'max:48', Rule::unique('databases')->where(function (Builder $query) use ($server) { $query->where('server_id', $server->id)->where('database', $this->databaseName()); }), ], 'remote' => 'required|string|regex:/^[0-9%.]{1,15}$/', 'host' => 'required|integer|exists:database_hosts,id', ]; } /** * Return data formatted in the correct format for the service to consume. * * @return array */ public function validated() { return [ 'database' => $this->input('database'), 'remote' => $this->input('remote'), 'database_host_id' => $this->input('host'), ]; } /** * Format error messages in a more understandable format for API output. * * @return array */ public function attributes() { return [ 'host' => 'Database Host Server ID', 'remote' => 'Remote Connection String', 'database' => 'Database Name', ]; } /** * Returns the database name in the expected format. */ public function databaseName(): string { $server = $this->route()->parameter('server'); Assert::isInstanceOf($server, Server::class); return DatabaseManagementService::generateUniqueDatabaseName($this->input('database'), $server->id); } }