From 83f673b37f6172d6adbcc263cc6e4a51b9fccaaa Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Fri, 1 Nov 2024 16:14:14 -0400 Subject: [PATCH] - Mostly bug fixes done on this code push --- src/Adapter/DefaultAdapterTrait.php | 2 +- src/Adapter/MsSQL.php | 1 + src/EntityTrait.php | 2 +- .../Repository/CollectionFromQueryItemInterface.php | 9 +++++++++ src/EventTrait.php | 2 +- src/Repository.php | 5 ++++- src/Repository/RepositoryInterface.php | 8 ++++++++ src/Ulmus.php | 2 +- 8 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/Event/Repository/CollectionFromQueryItemInterface.php create mode 100644 src/Repository/RepositoryInterface.php diff --git a/src/Adapter/DefaultAdapterTrait.php b/src/Adapter/DefaultAdapterTrait.php index 2de4f7b..607cc4b 100644 --- a/src/Adapter/DefaultAdapterTrait.php +++ b/src/Adapter/DefaultAdapterTrait.php @@ -2,7 +2,7 @@ namespace Ulmus\Adapter; -use Ulmus\{ConnectionAdapter, Entity\InformationSchema\Table, Migration\FieldDefinition, Repository, QueryBuilder\Sql\MysqlQueryBuilder}; +use Ulmus\{ConnectionAdapter, Entity\InformationSchema\Table, Entity, Migration\FieldDefinition, Repository, QueryBuilder\Sql\MysqlQueryBuilder}; trait DefaultAdapterTrait { diff --git a/src/Adapter/MsSQL.php b/src/Adapter/MsSQL.php index 7e1ae5f..4ad8e3d 100644 --- a/src/Adapter/MsSQL.php +++ b/src/Adapter/MsSQL.php @@ -207,6 +207,7 @@ class MsSQL implements AdapterInterface, MigrateInterface, SqlAdapterInterface { public function escapeIdentifier(string $segment, int $type) : string { switch($type) { + default: case static::IDENTIFIER_SCHEMA: case static::IDENTIFIER_DATABASE: case static::IDENTIFIER_TABLE: diff --git a/src/EntityTrait.php b/src/EntityTrait.php index fafd3f6..c7db884 100644 --- a/src/EntityTrait.php +++ b/src/EntityTrait.php @@ -76,7 +76,7 @@ trait EntityTrait { elseif ( EntityField::isScalarType($field['type']) ) { if ( $field['type'] === 'string' ) { - $annotation = $entityResolver->searchFieldAnnotation($field['name'], [ Attribute\Property\Field::class, Field::class ] ); + $annotation = $entityResolver->searchFieldAnnotation($field['name'], [ Attribute\Property\Field::class, ] ); if ( $annotation->length ?? null ) { $value = mb_substr($value, 0, $annotation->length); diff --git a/src/Event/Repository/CollectionFromQueryItemInterface.php b/src/Event/Repository/CollectionFromQueryItemInterface.php new file mode 100644 index 0000000..d14ac34 --- /dev/null +++ b/src/Event/Repository/CollectionFromQueryItemInterface.php @@ -0,0 +1,9 @@ +eventList, fn($ev) => $ev instanceof $type); } - public function eventExecute(string $type, ...$arguments) : void + public function eventExecute(string $type, &...$arguments) : void { foreach($this->eventFromType($type) as $event) { call_user_func_array([ $event, 'execute'], $arguments); diff --git a/src/Repository.php b/src/Repository.php index 953b73a..25c7be7 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -13,9 +13,10 @@ use Ulmus\Annotation\Property\{Field, WithJoin, Relation\Ignore as RelationIgnore}; use Ulmus\Common\EntityResolver; +use Ulmus\Repository\RepositoryInterface; use Ulmus\Repository\WithOptionEnum; -class Repository +class Repository implements RepositoryInterface { use EventTrait, Repository\ConditionTrait, Repository\EscapeTrait; @@ -869,6 +870,8 @@ class Repository $this->finalizeQuery(); foreach(Ulmus::iterateQueryBuilder($this->queryBuilder, $this->adapter) as $entityData) { + $this->eventExecute(\Ulmus\Event\Repository\CollectionFromQueryItemInterface::class, $entityData); + $entity = $this->instanciateEntity($entityClass); $entity->loadedFromAdapter = $this->adapter->name; diff --git a/src/Repository/RepositoryInterface.php b/src/Repository/RepositoryInterface.php new file mode 100644 index 0000000..6cd998a --- /dev/null +++ b/src/Repository/RepositoryInterface.php @@ -0,0 +1,8 @@ +runInsertQuery($queryBuilder->render(),$queryBuilder->values ?? []); + $return = static::connector($adapter)->runInsertQuery($queryBuilder->render(), $queryBuilder->values ?? []); $queryBuilder->reset(); return $return;