From b1adf5a086d6bc58f5b65925f489a4178f67261c Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Mon, 15 Jun 2026 19:36:09 +0000 Subject: [PATCH] - Fixed some bugs regarding parameter binding --- src/ApiRepository.php | 2 +- src/RequestBuilder/Filter.php | 2 +- src/SearchRequest/ApiSearchRequest.php | 12 ++++++++---- src/SearchRequest/Attribute/BindParameter.php | 13 +++++++++---- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/ApiRepository.php b/src/ApiRepository.php index 7447352..b6fb183 100644 --- a/src/ApiRepository.php +++ b/src/ApiRepository.php @@ -28,7 +28,7 @@ class ApiRepository extends \Ulmus\Repository public ResponseInterface $lastResponse; - public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null) + public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, null|ConnectionAdapter $adapter = null) { parent::__construct($entity, $alias, $adapter); } diff --git a/src/RequestBuilder/Filter.php b/src/RequestBuilder/Filter.php index b81e084..fe6e4d3 100644 --- a/src/RequestBuilder/Filter.php +++ b/src/RequestBuilder/Filter.php @@ -10,7 +10,7 @@ class Filter extends Fragment public function add($field, mixed $value) : self { - $this->conditionList[$field] = $value; + $this->conditionList[(string) $field] = $value; return $this; } diff --git a/src/SearchRequest/ApiSearchRequest.php b/src/SearchRequest/ApiSearchRequest.php index fd1c8b0..e36b9f6 100644 --- a/src/SearchRequest/ApiSearchRequest.php +++ b/src/SearchRequest/ApiSearchRequest.php @@ -13,7 +13,7 @@ use Ulmus\{Api\SearchRequest\Attribute\BindParameter, class ApiSearchRequest extends SearchRequest implements SearchRequestInterface { - use SearchRequestPaginationTrait, SearchRequestFromRequestTrait { + use /*SearchRequestPaginationTrait,*/ SearchRequestFromRequestTrait { parseAttributeMethod as parseAttributeMethodParent; } @@ -26,14 +26,18 @@ class ApiSearchRequest extends SearchRequest implements SearchRequestInterface ], fn($i) => !is_null($i)) + []; } - protected function parseAttributeMethod(object $attribute, string $field, string $propertyName,): void + protected function parseAttributeMethod(object $attribute, string|\Stringable $field, string $propertyName) : void { switch ($attribute->method) { + case SearchMethodEnum::Where: case SearchMethodEnum::Manual: if ($attribute instanceof BindParameter) { - $this->bindings[$field] = $this->$propertyName; + if (isset($this->$propertyName)) { + $this->bindings[(string)$field] = $this->$propertyName; + } + + return; } - break; default: $this->parseAttributeMethodParent($attribute, $field, $propertyName); diff --git a/src/SearchRequest/Attribute/BindParameter.php b/src/SearchRequest/Attribute/BindParameter.php index 093f9b9..8106e29 100644 --- a/src/SearchRequest/Attribute/BindParameter.php +++ b/src/SearchRequest/Attribute/BindParameter.php @@ -2,15 +2,20 @@ namespace Ulmus\Api\SearchRequest\Attribute; -use Ulmus\SearchRequest\{ SearchMethodEnum, Attribute\SearchParameter }; +use Ulmus\SearchRequest\{Attribute\PropertyValueSource, + Attribute\SearchManual, + SearchMethodEnum, + Attribute\SearchParameter}; #[\Attribute(\Attribute::TARGET_PROPERTY)] -class BindParameter extends SearchParameter +class BindParameter extends SearchManual { public function __construct( - public ? string $parameter = null, - public ? string $field = null, + public null|string|array $parameter = null, + public null|string|\Stringable|array $field = null, public bool $toggle = false, public SearchMethodEnum $method = SearchMethodEnum::Manual, + public string $description = "", + public PropertyValueSource|array $source = PropertyValueSource::RequestAttribute, ) {} } \ No newline at end of file