Skip to content

Commit

Permalink
Add "ignore_missing" option to concerned processors (#2001)
Browse files Browse the repository at this point in the history
* Use trait for ignore_missing processor option

* Add option to concerned processors

* Add changelog

* Add tests
  • Loading branch information
deguif authored Oct 21, 2021
1 parent fa4ddb1 commit 702427b
Show file tree
Hide file tree
Showing 16 changed files with 111 additions and 70 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased](https://github.com/ruflin/Elastica/compare/7.1.2...master)
### Backward Compatibility Breaks
### Added
* Added `ignore_missing` option to `lowercase`, `remove`, `trim` and `uppercase` processors [#2001](https://github.com/ruflin/Elastica/pull/2001)
### Changed
### Deprecated
### Removed
Expand Down
12 changes: 2 additions & 10 deletions src/Processor/AttachmentProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class AttachmentProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_TARGET_FIELD_VALUE = 'attachment';
public const DEFAULT_INDEXED_CHARS_VALUE = 100000;
public const DEFAULT_IGNORE_MISSING_VALUE = false;
Expand Down Expand Up @@ -59,14 +61,4 @@ public function setProperties(array $properties): self
{
return $this->setParam('properties', $properties);
}

/**
* Set ignore_missing. Default value false.
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
14 changes: 2 additions & 12 deletions src/Processor/ConvertProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class ConvertProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_TARGET_FIELD_VALUE = 'field';
public const DEFAULT_IGNORE_MISSING_VALUE = false;

Expand Down Expand Up @@ -49,16 +51,4 @@ public function setTargetField(string $targetField): self
{
return $this->setParam('target_field', $targetField);
}

/**
* Set ignore_missing. Default value false.
*
* @param bool $ignoreMissing only these values are allowed (integer|float|string|boolean|auto)
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
14 changes: 2 additions & 12 deletions src/Processor/ForeachProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
*/
class ForeachProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_IGNORE_MISSING_VALUE = false;

/**
Expand Down Expand Up @@ -60,16 +62,4 @@ public function setRawProcessor(array $processor): self
{
return $this->setParam('processor', $processor);
}

/**
* Set ignore_missing. Default value false.
*
* If true and field does not exist or is null, the processor quietly exits without modifying the document
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
14 changes: 2 additions & 12 deletions src/Processor/KvProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class KvProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_TARGET_FIELD_VALUE = null;
public const DEFAULT_IGNORE_MISSING_VALUE = false;

Expand Down Expand Up @@ -80,16 +82,4 @@ public function setExcludeKeys(array $listOfKeys): self
{
return $this->setParam('exclude_keys', $listOfKeys);
}

/**
* Set ignore_missing. Default value false.
*
* @param bool $ignoreMissing only these values are allowed (integer|float|string|boolean|auto)
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
2 changes: 2 additions & 0 deletions src/Processor/LowercaseProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class LowercaseProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public function __construct(string $field)
{
$this->setField($field);
Expand Down
2 changes: 2 additions & 0 deletions src/Processor/RemoveProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class RemoveProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

/**
* @param array|string $field
*/
Expand Down
14 changes: 2 additions & 12 deletions src/Processor/RenameProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class RenameProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_IGNORE_MISSING_VALUE = false;

public function __construct(string $field, string $targetField)
Expand Down Expand Up @@ -38,16 +40,4 @@ public function setTargetField(string $targetField): self
{
return $this->setParam('target_field', $targetField);
}

/**
* Set ignore_missing. Default value false.
*
* @param bool $ignoreMissing only these values are allowed (integer|float|string|boolean|auto)
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
14 changes: 2 additions & 12 deletions src/Processor/SplitProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class SplitProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public const DEFAULT_IGNORE_MISSING_VALUE = false;

public function __construct(string $field, string $separator)
Expand Down Expand Up @@ -38,16 +40,4 @@ public function setSeparator(string $separator): self
{
return $this->setParam('separator', $separator);
}

/**
* Set ignore_missing. Default value false.
*
* @param bool $ignoreMissing only these values are allowed (integer|float|string|boolean|auto)
*
* @return $this
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
14 changes: 14 additions & 0 deletions src/Processor/Traits/IgnoreMissingTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Elastica\Processor\Traits;

trait IgnoreMissingTrait
{
/**
* Set "ignore_missing" option.
*/
public function setIgnoreMissing(bool $ignoreMissing): self
{
return $this->setParam('ignore_missing', $ignoreMissing);
}
}
2 changes: 2 additions & 0 deletions src/Processor/TrimProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class TrimProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public function __construct(string $field)
{
$this->setField($field);
Expand Down
2 changes: 2 additions & 0 deletions src/Processor/UppercaseProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
*/
class UppercaseProcessor extends AbstractProcessor
{
use Traits\IgnoreMissingTrait;

public function __construct(string $field)
{
$this->setField($field);
Expand Down
19 changes: 19 additions & 0 deletions tests/Processor/LowercaseProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ public function testLowercase(): void
$this->assertEquals($expected, $processor->toArray());
}

/**
* @group unit
*/
public function testLowercaseWithNonDefaultOptions(): void
{
$processor = (new LowercaseProcessor('foo'))
->setIgnoreMissing(true)
;

$expected = [
'lowercase' => [
'field' => 'foo',
'ignore_missing' => true,
],
];

$this->assertEquals($expected, $processor->toArray());
}

/**
* @group functional
*/
Expand Down
19 changes: 19 additions & 0 deletions tests/Processor/RemoveProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ public function testRemove(): void
$this->assertEquals($expected, $processor->toArray());
}

/**
* @group unit
*/
public function testRemoveWithNonDefaultOptions(): void
{
$processor = (new RemoveProcessor('foo'))
->setIgnoreMissing(true)
;

$expected = [
'remove' => [
'field' => 'foo',
'ignore_missing' => true,
],
];

$this->assertEquals($expected, $processor->toArray());
}

/**
* @group unit
*/
Expand Down
19 changes: 19 additions & 0 deletions tests/Processor/TrimProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ public function testTrim(): void
$this->assertEquals($expected, $processor->toArray());
}

/**
* @group unit
*/
public function testTrimWithNonDefaultOptions(): void
{
$processor = (new TrimProcessor('foo'))
->setIgnoreMissing(true)
;

$expected = [
'trim' => [
'field' => 'foo',
'ignore_missing' => true,
],
];

$this->assertEquals($expected, $processor->toArray());
}

/**
* @group functional
*/
Expand Down
19 changes: 19 additions & 0 deletions tests/Processor/UppercaseProcessorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ public function testUppercase(): void
$this->assertEquals($expected, $processor->toArray());
}

/**
* @group unit
*/
public function testUppercaseWithNonDefaultOptions(): void
{
$processor = (new UppercaseProcessor('foo'))
->setIgnoreMissing(true)
;

$expected = [
'uppercase' => [
'field' => 'foo',
'ignore_missing' => true,
],
];

$this->assertEquals($expected, $processor->toArray());
}

/**
* @group functional
*/
Expand Down

0 comments on commit 702427b

Please sign in to comment.