* @return array|false
*/
function rootQuery(string $path, ?array $content = null, string $method = 'GET') {
- $file = @file_get_contents("$this->url/" . ltrim($path, '/'), false, stream_context_create(array('http' => array(
- 'method' => $method,
- 'content' => $content !== null ? json_encode($content) : null,
- 'header' => $content !== null ? 'Content-Type: application/json' : array(),
- 'ignore_errors' => 1,
- 'follow_location' => 0,
- 'max_redirects' => 0,
- ))));
+ $file = @file_get_contents("$this->url/" . ltrim($path, '/'), false, stream_context_create(array(
+ //~ 'ssl' => array('verify_peer' => false),
+ 'http' => array(
+ 'method' => $method,
+ 'content' => $content !== null ? json_encode($content) : null,
+ 'header' => $content !== null ? 'Content-Type: application/json' : array(),
+ 'ignore_errors' => 1,
+ 'follow_location' => 0,
+ 'max_redirects' => 0,
+ ),
+ )));
if ($file === false) {
$this->error = lang('Invalid server or credentials.');
$parts = preg_split('~ *= *~', $queryWhere);
if (count($parts) == 2) {
$id = trim($parts[1]);
- $query = "$type/$id";
-
- return $this->conn->rootQuery($query, $record, 'POST');
+ $query = "$table/_update/$id";
+ $this->conn->affected_rows = 0;
+ return $this->conn->rootQuery($query, array('doc' => $set), 'POST');
}
return false;
function alter_table(string $table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
$properties = array();
foreach ($fields as $f) {
- $field_name = trim($f[1][0]);
- $field_type = trim($f[1][1] ?: "text");
- $properties[$field_name] = array(
- 'type' => $field_type
- );
+ if ($f[1]) {
+ $field_name = trim($f[1][0]);
+ $field_type = trim($f[1][1] ?: "text");
+ $properties[$field_name] = array(
+ 'type' => $field_type
+ );
+ }
}
if (!empty($properties)) {
$properties = array('properties' => $properties);
}
- return connection()->rootQuery("_mapping/$name", $properties, 'PUT');
+ if ($table != '') {
+ return connection()->rootQuery("$name/_mapping", $properties, 'POST');
+ } else {
+ return connection()->rootQuery($name, array('mappings' => $properties), 'PUT');
+ }
}
/** Drop types
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Katalon Elasticsearch</title>
+</head>
+<body>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Login</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200</td><td></td></tr>
+<tr><td>select</td><td>name=lang</td><td>label=English</td></tr>
+<tr><td>clickAndWait</td><td>css=#lang > input[type="submit"]</td><td></td></tr>
+<tr><td>type</td><td>id=username</td><td>ODBC</td></tr>
+<tr><td>type</td><td>name=auth[password]</td><td>ODBC12</td></tr>
+<tr><td>clickAndWait</td><td>//input[@value='Login']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>JSON</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Create table</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic</td><td></td></tr>
+<tr><td>clickAndWait</td><td>link=Create table</td><td></td></tr>
+<tr><td>type</td><td>name</td><td>interprets</td></tr>
+<tr><td>type</td><td>fields[1][field]</td><td>name</td></tr>
+<tr><td>select</td><td>fields[1][type]</td><td>label=text</td></tr>
+<tr><td>clickAndWait</td><td>//input[@value='Save']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>Table has been created.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Alter table</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&table=interprets</td><td></td></tr>
+<tr><td>clickAndWait</td><td>link=Alter table</td><td></td></tr>
+<tr><td>click</td><td>add[2]</td><td></td></tr>
+<tr><td>type</td><td>fields[3][field]</td><td>albums</td></tr>
+<tr><td>select</td><td>fields[3][type]</td><td>label=integer</td></tr>
+<tr><td>clickAndWait</td><td>//input[@value='Save']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>Table has been altered.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Insert</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&edit=interprets</td><td></td></tr>
+<tr><td>type</td><td>fields[name]</td><td>Michael Jackson</td></tr>
+<tr><td>clickAndWait</td><td>//input[@value='Save']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>has been inserted.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Select</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&select=interprets</td><td></td></tr>
+<tr><td>click</td><td>link=Search</td><td></td></tr>
+<tr><td>select</td><td>name=where[0][col]</td><td>label=name</td></tr>
+<tr><td>select</td><td>name=where[0][op]</td><td>label=should</td></tr>
+<tr><td>type</td><td>name=where[0][val]</td><td>Jackson</td></tr>
+<tr><td>click</td><td>link=Sort</td><td></td></tr>
+<tr><td>select</td><td>name=order[0]</td><td>label=albums</td></tr>
+<tr><td>clickAndWait</td><td>xpath=//input[@value='Select']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>1 row</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Update</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&select=interprets</td><td></td></tr>
+<tr><td>clickAndWait</td><td>link=edit</td><td></td></tr>
+<tr><td>type</td><td>fields[albums]</td><td>1</td></tr>
+<tr><td>clickAndWait</td><td>//input[@value='Save']</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>Item has been updated.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Delete</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&select=interprets</td><td></td></tr>
+<tr><td>click</td><td>name=check[]</td><td></td></tr>
+<tr><td>waitForChecked</td><td>name=check[]</td><td></td></tr>
+<tr><td>chooseOkOnNextConfirmation</td><td>Are you sure?</td><td></td></tr>
+<tr><td>click</td><td>delete</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>1 item has been affected.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Drop</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC&db=elastic&create=interprets</td><td></td></tr>
+<tr><td>chooseOkOnNextConfirmation</td><td>Drop interprets?</td><td></td></tr>
+<tr><td>click</td><td>name=drop</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>No tables.</td><td></td></tr>
+</tbody></table>
+
+<table cellpadding="1" cellspacing="1" border="1">
+<thead><tr><td rowspan="1" colspan="3">Logout</td></tr></thead>
+<tbody>
+<tr><td>open</td><td>/adminer/elastic.php?elastic=https%3A%2F%2Flocalhost:9200&username=ODBC</td><td></td></tr>
+<tr><td>clickAndWait</td><td>logout</td><td></td></tr>
+<tr><td>verifyTextPresent</td><td>Logout successful.</td><td></td></tr>
+<tr><td>open</td><td>/coverage.php</td><td></td></tr>
+</tbody></table>
+
+</body>
+</html>