- WIp on Migration for mssql
This commit is contained in:
parent
fb4985160a
commit
c719e4a6d1
@ -2,11 +2,23 @@
|
|||||||
|
|
||||||
namespace Ulmus\Entity\Mssql;
|
namespace Ulmus\Entity\Mssql;
|
||||||
|
|
||||||
|
use Ulmus\Attribute\Obj\Table as TableObj;
|
||||||
use Ulmus\Attribute\Property\Field;
|
use Ulmus\Attribute\Property\Field;
|
||||||
|
use Ulmus\ConnectionAdapter;
|
||||||
use Ulmus\Entity\Mysql\id;
|
use Ulmus\Entity\Mysql\id;
|
||||||
|
use Ulmus\Repository;
|
||||||
|
use Ulmus\Ulmus;
|
||||||
|
|
||||||
|
#[TableObj(name: "columns", schema: "information_schema")]
|
||||||
class Column extends \Ulmus\Entity\InformationSchema\Column
|
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
|
# TODO ! Handle FUNCTIONAL default value
|
||||||
protected function canHaveDefaultValue(): bool
|
protected function canHaveDefaultValue(): bool
|
||||||
|
@ -5,13 +5,22 @@ namespace Ulmus\Entity\Mssql;
|
|||||||
use Ulmus\EntityCollection,
|
use Ulmus\EntityCollection,
|
||||||
Ulmus\Entity\Field\Datetime;
|
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\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
|
class Table extends \Ulmus\Entity\InformationSchema\Table
|
||||||
{
|
{
|
||||||
#[Relation(type: "oneToMany", key: "name", foreignKey: [ Column::class, 'tableName' ], entity: Column::class)]
|
#[Relation(type: "oneToMany", key: "name", foreignKey: [ Column::class, 'tableName' ], entity: Column::class)]
|
||||||
#[Where('TABLE_SCHEMA', generateValue: [ Table::class, 'getSchema' ])]
|
#[Where('TABLE_SCHEMA', generateValue: [ Table::class, 'getSchema' ])]
|
||||||
|
##[Filter(method: "filterColumns")]
|
||||||
public EntityCollection $columns;
|
public EntityCollection $columns;
|
||||||
|
|
||||||
|
public function filterColumns() : Repository
|
||||||
|
{
|
||||||
|
$adapter = Ulmus::$registeredAdapters[$this->loadedFromAdapter];
|
||||||
|
|
||||||
|
return Column::repository(Repository\MssqlRepository::DEFAULT_ALIAS, $adapter);
|
||||||
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ use Ulmus\Attribute\Property\{
|
|||||||
Field, OrderBy, Where, Having, Relation, Filter, Join, FilterJoin, WithJoin
|
Field, OrderBy, Where, Having, Relation, Filter, Join, FilterJoin, WithJoin
|
||||||
};
|
};
|
||||||
use Psr\SimpleCache\CacheInterface;
|
use Psr\SimpleCache\CacheInterface;
|
||||||
|
use Ulmus\Adapter\AdapterInterface;
|
||||||
use Ulmus\Common\EntityResolver;
|
use Ulmus\Common\EntityResolver;
|
||||||
use Ulmus\Entity\EntityInterface;
|
use Ulmus\Entity\EntityInterface;
|
||||||
use Ulmus\Repository\RepositoryInterface;
|
use Ulmus\Repository\RepositoryInterface;
|
||||||
@ -25,7 +26,7 @@ class Repository implements RepositoryInterface
|
|||||||
|
|
||||||
public ? ConnectionAdapter $adapters;
|
public ? ConnectionAdapter $adapters;
|
||||||
|
|
||||||
public readonly QueryBuilder\QueryBuilderInterface $queryBuilder;
|
public QueryBuilder\QueryBuilderInterface $queryBuilder;
|
||||||
|
|
||||||
protected EntityResolver $entityResolver;
|
protected EntityResolver $entityResolver;
|
||||||
|
|
||||||
@ -36,6 +37,11 @@ class Repository implements RepositoryInterface
|
|||||||
$this->alias = $alias;
|
$this->alias = $alias;
|
||||||
$this->entityResolver = Ulmus::resolveEntity($entity);
|
$this->entityResolver = Ulmus::resolveEntity($entity);
|
||||||
|
|
||||||
|
$this->setAdapter($adapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAdapter(? ConnectionAdapter $adapter = null) : void {
|
||||||
|
|
||||||
if ($adapter) {
|
if ($adapter) {
|
||||||
$this->adapter = $adapter;
|
$this->adapter = $adapter;
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ class RelationBuilder
|
|||||||
{
|
{
|
||||||
$relation->entity ??= $this->resolver->reflectedClass->getProperties()[$name]->getTypes()[0]->type;
|
$relation->entity ??= $this->resolver->reflectedClass->getProperties()[$name]->getTypes()[0]->type;
|
||||||
|
|
||||||
$this->repository = $relation->entity::repository();
|
$this->repository ??= $relation->entity::repository();
|
||||||
|
|
||||||
$this->applyWhere();
|
$this->applyWhere();
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ class RelationBuilder
|
|||||||
|
|
||||||
if (isset($value)) {
|
if (isset($value)) {
|
||||||
#$this->repository->where( is_object($relation->foreignKey) ? $relation->foreignKey : $relation->entity::field($relation->foreignKey), $value );
|
#$this->repository->where( is_object($relation->foreignKey) ? $relation->foreignKey : $relation->entity::field($relation->foreignKey), $value );
|
||||||
$this->repository->where( $relation->foreignKey($this->repository), $value );
|
$this->repository->where($relation->foreignKey($this->repository), $value);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->repository->where(Sql::raw('TRUE'), Sql::raw('FALSE'));
|
$this->repository->where(Sql::raw('TRUE'), Sql::raw('FALSE'));
|
||||||
@ -296,7 +296,7 @@ class RelationBuilder
|
|||||||
{
|
{
|
||||||
extract($this->relationAnnotations($name, $relation));
|
extract($this->relationAnnotations($name, $relation));
|
||||||
|
|
||||||
$this->repository = $relationRelation->entity::repository();
|
$this->repository ??= $relationRelation->entity::repository();
|
||||||
|
|
||||||
$bridgeAlias = $relation->bridgeField ?? uniqid("bridge_");
|
$bridgeAlias = $relation->bridgeField ?? uniqid("bridge_");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user