- WIp on Migration for mssql

This commit is contained in:
Dave Mc Nicoll 2025-05-26 18:21:37 +00:00
parent fb4985160a
commit c719e4a6d1
4 changed files with 33 additions and 6 deletions

View File

@ -2,11 +2,23 @@
namespace Ulmus\Entity\Mssql;
use Ulmus\Attribute\Obj\Table as TableObj;
use Ulmus\Attribute\Property\Field;
use Ulmus\ConnectionAdapter;
use Ulmus\Entity\Mysql\id;
use Ulmus\Repository;
use Ulmus\Ulmus;
#[TableObj(name: "columns", schema: "information_schema")]
class Column extends \Ulmus\Entity\InformationSchema\Column
{
/*
public static function repository(string $alias = Repository::DEFAULT_ALIAS, ConnectionAdapter $adapter = null): Repository
{
$adapter = Ulmus::$registeredAdapters[$this->loadedFromAdapter];
return Ulmus::repository(static::class, $alias, $adapter);
}*/
# TODO ! Handle FUNCTIONAL default value
protected function canHaveDefaultValue(): bool

View File

@ -5,13 +5,22 @@ namespace Ulmus\Entity\Mssql;
use Ulmus\EntityCollection,
Ulmus\Entity\Field\Datetime;
use Ulmus\{Attribute\Obj\Table as TableObj,};
use Ulmus\{Attribute\Obj\Table as TableObj, Ulmus};
use Ulmus\Attribute\Property\{Field, Filter, FilterJoin, Relation, Join, Virtual, Where};
use Ulmus\Repository;
#[TableObj(name: "tables", database: "information_schema")]
#[TableObj(name: "tables", schema: "information_schema")]
class Table extends \Ulmus\Entity\InformationSchema\Table
{
#[Relation(type: "oneToMany", key: "name", foreignKey: [ Column::class, 'tableName' ], entity: Column::class)]
#[Where('TABLE_SCHEMA', generateValue: [ Table::class, 'getSchema' ])]
##[Filter(method: "filterColumns")]
public EntityCollection $columns;
public function filterColumns() : Repository
{
$adapter = Ulmus::$registeredAdapters[$this->loadedFromAdapter];
return Column::repository(Repository\MssqlRepository::DEFAULT_ALIAS, $adapter);
}
}

View File

@ -6,6 +6,7 @@ use Ulmus\Attribute\Property\{
Field, OrderBy, Where, Having, Relation, Filter, Join, FilterJoin, WithJoin
};
use Psr\SimpleCache\CacheInterface;
use Ulmus\Adapter\AdapterInterface;
use Ulmus\Common\EntityResolver;
use Ulmus\Entity\EntityInterface;
use Ulmus\Repository\RepositoryInterface;
@ -25,7 +26,7 @@ class Repository implements RepositoryInterface
public ? ConnectionAdapter $adapters;
public readonly QueryBuilder\QueryBuilderInterface $queryBuilder;
public QueryBuilder\QueryBuilderInterface $queryBuilder;
protected EntityResolver $entityResolver;
@ -36,6 +37,11 @@ class Repository implements RepositoryInterface
$this->alias = $alias;
$this->entityResolver = Ulmus::resolveEntity($entity);
$this->setAdapter($adapter);
}
public function setAdapter(? ConnectionAdapter $adapter = null) : void {
if ($adapter) {
$this->adapter = $adapter;

View File

@ -264,7 +264,7 @@ class RelationBuilder
{
$relation->entity ??= $this->resolver->reflectedClass->getProperties()[$name]->getTypes()[0]->type;
$this->repository = $relation->entity::repository();
$this->repository ??= $relation->entity::repository();
$this->applyWhere();
@ -296,7 +296,7 @@ class RelationBuilder
{
extract($this->relationAnnotations($name, $relation));
$this->repository = $relationRelation->entity::repository();
$this->repository ??= $relationRelation->entity::repository();
$bridgeAlias = $relation->bridgeField ?? uniqid("bridge_");