From b6019394594e77eb892589e2cc78987c5d9a816f Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Thu, 21 Nov 2024 19:16:40 -0500 Subject: [PATCH] - Bugfixes in search request, WIP on JsonTrait --- src/Adapter/SQLite.php | 2 +- src/Repository.php | 5 +++-- src/Repository/MysqlRepository.php | 3 ++- src/Repository/SqliteRepository.php | 3 ++- src/SearchRequest/SearchRequestFromRequestTrait.php | 3 ++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Adapter/SQLite.php b/src/Adapter/SQLite.php index 30bb402..29d16b7 100644 --- a/src/Adapter/SQLite.php +++ b/src/Adapter/SQLite.php @@ -13,7 +13,7 @@ class SQLite implements AdapterInterface, MigrateInterface, SqlAdapterInterface use SqlAdapterTrait; const ALLOWED_ATTRIBUTES = [ - 'default', 'primary_key', 'auto_increment' + 'default', 'primary_key', 'auto_increment', 'collate nocase', 'collate binary', 'collate rtrim', ]; const DSN_PREFIX = "sqlite"; diff --git a/src/Repository.php b/src/Repository.php index dbebcb1..aa0bb9f 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -1055,9 +1055,10 @@ class Repository implements RepositoryInterface public function instanciateEntity(? string $entityClass = null) : object { - $entityClass ??= $this->entityClass; + $entity = ( new \ReflectionClass($entityClass ?? $this->entityClass) )->newInstanceWithoutConstructor(); + $entity->initializeEntity(); - return new $entityClass; + return $entity; } public function hasFilters() : bool diff --git a/src/Repository/MysqlRepository.php b/src/Repository/MysqlRepository.php index 970d457..0d5f31f 100644 --- a/src/Repository/MysqlRepository.php +++ b/src/Repository/MysqlRepository.php @@ -2,9 +2,10 @@ namespace Ulmus\Repository; -use Ulmus\{Common\EntityResolver, ConnectionAdapter, MysqlQueryBuilder, Repository, Query, Ulmus}; +use Ulmus\{ Repository, Query, Ulmus}; class MysqlRepository extends Repository { + use JsonConditionTrait; public function pragma(/*object|Stringable*/ $pragma, $argument = null, bool $callable = false) : self { diff --git a/src/Repository/SqliteRepository.php b/src/Repository/SqliteRepository.php index 9e08f89..cfca5cc 100644 --- a/src/Repository/SqliteRepository.php +++ b/src/Repository/SqliteRepository.php @@ -2,9 +2,10 @@ namespace Ulmus\Repository; -use Ulmus\{ConnectionAdapter, MysqlQueryBuilder, Repository, Query, Ulmus, Entity}; +use Ulmus\{Repository, Entity}; class SqliteRepository extends Repository { + use JsonConditionTrait; public function pragma(\Stringable|string $pragma, $argument = null, bool $callable = false) : self { diff --git a/src/SearchRequest/SearchRequestFromRequestTrait.php b/src/SearchRequest/SearchRequestFromRequestTrait.php index d55a44e..a4f8f5f 100644 --- a/src/SearchRequest/SearchRequestFromRequestTrait.php +++ b/src/SearchRequest/SearchRequestFromRequestTrait.php @@ -90,7 +90,8 @@ trait SearchRequestFromRequestTrait sprintf("Given value '%s' do not exists within enum '%s'. Try one of those values instead : %s", $value, $enum, $cases) ); } - } elseif ($type->builtIn) { + } + elseif ($type->builtIn || $value instanceof \Stringable ) { $this->$propertyName = $value; } }