From 22b447e4ba803606d4ef186cc46e9ff2537c742b Mon Sep 17 00:00:00 2001 From: Laurens Bultynck Date: Fri, 21 Apr 2023 12:44:40 +0200 Subject: [PATCH 1/3] Add method to configure dynamic mapping setting --- src/Indices/Mapping.php | 12 ++++++++++++ tests/Unit/Indices/MappingTest.php | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/src/Indices/Mapping.php b/src/Indices/Mapping.php index 9be081b..c059412 100644 --- a/src/Indices/Mapping.php +++ b/src/Indices/Mapping.php @@ -56,6 +56,7 @@ final class Mapping implements Arrayable private ?bool $isSourceEnabled; private MappingProperties $properties; private array $dynamicTemplates = []; + private mixed $dynamic; public function __construct() { @@ -90,6 +91,13 @@ public function disableSource(): self return $this; } + public function dynamic(mixed $dynamic): self + { + $this->dynamic = $dynamic; + + return $this; + } + public function dynamicTemplate(string $name, array $parameters): self { $this->dynamicTemplates[] = [$name => $parameters]; @@ -119,6 +127,10 @@ public function toArray(): array ]; } + if(isset($this->dynamic)) { + $mapping['dynamic'] = $this->dynamic; + } + if (!empty($properties)) { $mapping['properties'] = $properties; } diff --git a/tests/Unit/Indices/MappingTest.php b/tests/Unit/Indices/MappingTest.php index e1cc72f..5f47d44 100644 --- a/tests/Unit/Indices/MappingTest.php +++ b/tests/Unit/Indices/MappingTest.php @@ -56,6 +56,15 @@ public function test_source_can_be_enabled(): void ], $mapping->toArray()); } + public function test_dynamic_mapping_can_be_configured(): void + { + $mapping = (new Mapping())->dynamic('strict'); + + $this->assertSame([ + 'dynamic' => 'strict', + ], $mapping->toArray()); + } + public function test_default_array_casting(): void { $this->assertSame([], (new Mapping())->toArray()); From 96febd65f8d848269c70f7c0780440d5d84f141b Mon Sep 17 00:00:00 2001 From: Laurens Bultynck Date: Mon, 24 Apr 2023 15:00:40 +0200 Subject: [PATCH 2/3] Use PHP 7.4 compatible annotations Co-authored-by: Ivan Babenko --- src/Indices/Mapping.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Indices/Mapping.php b/src/Indices/Mapping.php index c059412..94e2c66 100644 --- a/src/Indices/Mapping.php +++ b/src/Indices/Mapping.php @@ -91,7 +91,10 @@ public function disableSource(): self return $this; } - public function dynamic(mixed $dynamic): self + /** + * @param string|bool $dynamic + */ + public function dynamic($dynamic): self { $this->dynamic = $dynamic; From 0f7f7456a5e90415a5b59f49262b30f7beb683de Mon Sep 17 00:00:00 2001 From: Laurens Bultynck Date: Mon, 24 Apr 2023 15:05:07 +0200 Subject: [PATCH 3/3] Update annotation on private property to support PHP 7.4 --- src/Indices/Mapping.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Indices/Mapping.php b/src/Indices/Mapping.php index 94e2c66..72ce6d2 100644 --- a/src/Indices/Mapping.php +++ b/src/Indices/Mapping.php @@ -56,7 +56,10 @@ final class Mapping implements Arrayable private ?bool $isSourceEnabled; private MappingProperties $properties; private array $dynamicTemplates = []; - private mixed $dynamic; + /** + * @var string|bool|null + */ + private $dynamic; public function __construct() {