- Mostly bug fixes done on this code push

This commit is contained in:
Dave Mc Nicoll 2024-11-01 16:14:14 -04:00
parent 7de0ecb028
commit 83f673b37f
8 changed files with 26 additions and 5 deletions

View File

@ -2,7 +2,7 @@
namespace Ulmus\Adapter; 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 trait DefaultAdapterTrait
{ {

View File

@ -207,6 +207,7 @@ class MsSQL implements AdapterInterface, MigrateInterface, SqlAdapterInterface {
public function escapeIdentifier(string $segment, int $type) : string public function escapeIdentifier(string $segment, int $type) : string
{ {
switch($type) { switch($type) {
default:
case static::IDENTIFIER_SCHEMA: case static::IDENTIFIER_SCHEMA:
case static::IDENTIFIER_DATABASE: case static::IDENTIFIER_DATABASE:
case static::IDENTIFIER_TABLE: case static::IDENTIFIER_TABLE:

View File

@ -76,7 +76,7 @@ trait EntityTrait {
elseif ( EntityField::isScalarType($field['type']) ) { elseif ( EntityField::isScalarType($field['type']) ) {
if ( $field['type'] === 'string' ) { 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 ) { if ( $annotation->length ?? null ) {
$value = mb_substr($value, 0, $annotation->length); $value = mb_substr($value, 0, $annotation->length);

View File

@ -0,0 +1,9 @@
<?php
namespace Ulmus\Event\Repository;
use Ulmus\EntityCollection;
interface CollectionFromQueryItemInterface {
public function execute(array &$data) : array;
}

View File

@ -16,7 +16,7 @@ trait EventTrait
return array_filter($this->eventList, fn($ev) => $ev instanceof $type); return array_filter($this->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) { foreach($this->eventFromType($type) as $event) {
call_user_func_array([ $event, 'execute'], $arguments); call_user_func_array([ $event, 'execute'], $arguments);

View File

@ -13,9 +13,10 @@ use Ulmus\Annotation\Property\{Field,
WithJoin, WithJoin,
Relation\Ignore as RelationIgnore}; Relation\Ignore as RelationIgnore};
use Ulmus\Common\EntityResolver; use Ulmus\Common\EntityResolver;
use Ulmus\Repository\RepositoryInterface;
use Ulmus\Repository\WithOptionEnum; use Ulmus\Repository\WithOptionEnum;
class Repository class Repository implements RepositoryInterface
{ {
use EventTrait, Repository\ConditionTrait, Repository\EscapeTrait; use EventTrait, Repository\ConditionTrait, Repository\EscapeTrait;
@ -869,6 +870,8 @@ class Repository
$this->finalizeQuery(); $this->finalizeQuery();
foreach(Ulmus::iterateQueryBuilder($this->queryBuilder, $this->adapter) as $entityData) { foreach(Ulmus::iterateQueryBuilder($this->queryBuilder, $this->adapter) as $entityData) {
$this->eventExecute(\Ulmus\Event\Repository\CollectionFromQueryItemInterface::class, $entityData);
$entity = $this->instanciateEntity($entityClass); $entity = $this->instanciateEntity($entityClass);
$entity->loadedFromAdapter = $this->adapter->name; $entity->loadedFromAdapter = $this->adapter->name;

View File

@ -0,0 +1,8 @@
<?php
namespace Ulmus\Repository;
interface RepositoryInterface
{
}

View File

@ -82,7 +82,7 @@ abstract class Ulmus
public static function runInsertQuery(QueryBuilder\QueryBuilderInterface $queryBuilder, ? ConnectionAdapter $adapter = null) public static function runInsertQuery(QueryBuilder\QueryBuilderInterface $queryBuilder, ? ConnectionAdapter $adapter = null)
{ {
$return = static::connector($adapter)->runInsertQuery($queryBuilder->render(),$queryBuilder->values ?? []); $return = static::connector($adapter)->runInsertQuery($queryBuilder->render(), $queryBuilder->values ?? []);
$queryBuilder->reset(); $queryBuilder->reset();
return $return; return $return;