diff --git a/src/Adapter/MsSQL.php b/src/Adapter/MsSQL.php index 7b161df..320bf6e 100644 --- a/src/Adapter/MsSQL.php +++ b/src/Adapter/MsSQL.php @@ -207,6 +207,7 @@ class MsSQL implements AdapterInterface, MigrateInterface, SqlAdapterInterface { public static 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/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 ffe52b5..dbebcb1 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -6,9 +6,10 @@ use Ulmus\Attribute\Property\{ Field, OrderBy, Where, Having, Relation, Filter, Join, FilterJoin, WithJoin }; use Ulmus\Common\EntityResolver; +use Ulmus\Repository\RepositoryInterface; use Ulmus\Repository\WithOptionEnum; -class Repository +class Repository implements RepositoryInterface { use EventTrait, Repository\ConditionTrait, Repository\EscapeTrait; @@ -874,6 +875,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;