Skip to content

Commit

Permalink
Split Create out to its own internal endpoint for simplicity
Browse files Browse the repository at this point in the history
  • Loading branch information
polyfractal committed Oct 25, 2016
1 parent 6c77f62 commit 9eb573a
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 20 deletions.
7 changes: 3 additions & 4 deletions src/Elasticsearch/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -604,13 +604,12 @@ public function create($params)
/** @var callback $endpointBuilder */
$endpointBuilder = $this->endpoints;

/** @var \Elasticsearch\Endpoints\Index $endpoint */
$endpoint = $endpointBuilder('Index');
/** @var \Elasticsearch\Endpoints\Create $endpoint */
$endpoint = $endpointBuilder('Create');
$endpoint->setID($id)
->setIndex($index)
->setType($type)
->setBody($body)
->createIfAbsent();
->setBody($body);
$endpoint->setParams($params);

return $this->performRequest($endpoint);
Expand Down
107 changes: 107 additions & 0 deletions src/Elasticsearch/Endpoints/Create.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php

namespace Elasticsearch\Endpoints;

use Elasticsearch\Common\Exceptions;

/**
* Class Create
*
* @category Elasticsearch
* @package Elasticsearch\Endpoints
* @author Zachary Tong <[email protected]>
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache2
* @link http://elastic.co
*/
class Create extends AbstractEndpoint
{
/**
* @param array $body
*
* @throws \Elasticsearch\Common\Exceptions\InvalidArgumentException
* @return $this
*/
public function setBody($body)
{
if (isset($body) !== true) {
return $this;
}

$this->body = $body;

return $this;
}

/**
* @throws \Elasticsearch\Common\Exceptions\RuntimeException
* @return string
*/
public function getURI()
{
if (isset($this->index) !== true) {
throw new Exceptions\RuntimeException(
'index is required for Create'
);
}

if (isset($this->type) !== true) {
throw new Exceptions\RuntimeException(
'type is required for Create'
);
}

if (isset($this->id) !== true) {
throw new Exceptions\RuntimeException(
'id is required for Create'
);
}

$id = $this->id;
$index = $this->index;
$type = $this->type;
return "/$index/$type/$id/_create";
}

/**
* @return string[]
*/
public function getParamWhitelist()
{
return array(
'consistency',
'op_type',
'parent',
'percolate',
'refresh',
'replication',
'routing',
'timeout',
'timestamp',
'ttl',
'version',
'version_type',
'pipeline'
);
}

/**
* @return string
*/
public function getMethod()
{
return 'PUT';
}

/**
* @return array
* @throws \Elasticsearch\Common\Exceptions\RuntimeException
*/
public function getBody()
{
if (isset($this->body) !== true) {
throw new Exceptions\RuntimeException('Document body must be set for create request');
} else {
return $this->body;
}
}
}
16 changes: 0 additions & 16 deletions src/Elasticsearch/Endpoints/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,6 @@ public function getURI()
if (isset($id) === true) {
$uri = "/$index/$type/$id";
}

if ($this->createIfAbsent === true) {
$uri .= $this->addCreateFlag();
}

return $uri;
}

Expand Down Expand Up @@ -125,15 +120,4 @@ public function getBody()
return $this->body;
}
}

private function addCreateFlag()
{
if (isset($this->id) === true) {
return '/_create';
} else {
$this->params['op_type'] = 'create';

return "";
}
}
}

0 comments on commit 9eb573a

Please sign in to comment.