- Some small bugfixes made
This commit is contained in:
parent
a4743b471c
commit
01ab6e82d4
|
@ -104,7 +104,7 @@ trait DefaultAdapterTrait
|
||||||
public function generateAlterColumn(FieldDefinition $definition, array $field) : string|\Stringable
|
public function generateAlterColumn(FieldDefinition $definition, array $field) : string|\Stringable
|
||||||
{
|
{
|
||||||
if ($field['previous']) {
|
if ($field['previous']) {
|
||||||
$position = sprintf('AFTER %s', $adapter->escapeIdentifier($field['previous']['field'], AdapterInterface::IDENTIFIER_FIELD));
|
$position = sprintf('AFTER %s', $this->escapeIdentifier($field['previous']['field'], AdapterInterface::IDENTIFIER_FIELD));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$position = "FIRST";
|
$position = "FIRST";
|
||||||
|
|
|
@ -3,13 +3,20 @@
|
||||||
namespace Ulmus\Attribute;
|
namespace Ulmus\Attribute;
|
||||||
|
|
||||||
use Ulmus\Common\EntityField;
|
use Ulmus\Common\EntityField;
|
||||||
|
use Ulmus\Repository;
|
||||||
|
|
||||||
class Attribute
|
class Attribute
|
||||||
{
|
{
|
||||||
public static function handleArrayField(null|\Stringable|string|array $field) : mixed
|
public static function handleArrayField(null|\Stringable|string|array $field, null|string|bool $alias = Repository::DEFAULT_ALIAS, string $separator = ', ') : mixed
|
||||||
{
|
{
|
||||||
if ( is_array($field) ) {
|
if ( is_array($field) ) {
|
||||||
$class = array_shift($field);
|
$class = array_shift($field);
|
||||||
|
$field[1] ??= $alias;
|
||||||
|
|
||||||
|
if (is_array($field[0])) {
|
||||||
|
$field[] = $separator;
|
||||||
|
return $class::fields(...$field);
|
||||||
|
}
|
||||||
|
|
||||||
return $class::field(...$field);
|
return $class::field(...$field);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,17 @@ use Ulmus\Attribute\Attribute;
|
||||||
*/
|
*/
|
||||||
#[\Attribute(\Attribute::TARGET_PROPERTY)]
|
#[\Attribute(\Attribute::TARGET_PROPERTY)]
|
||||||
class ForeignKey extends PrimaryKey {
|
class ForeignKey extends PrimaryKey {
|
||||||
|
|
||||||
|
public const SET_NULL = "null";
|
||||||
|
|
||||||
|
public const SET_DEFAULT = "default";
|
||||||
|
|
||||||
|
public const RESTRICT = "restrict";
|
||||||
|
|
||||||
|
public const NO_ACTION = "noaction";
|
||||||
|
|
||||||
|
public const CASCADE = "cascade";
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
public ? string $name = null,
|
public ? string $name = null,
|
||||||
public ? string $type = 'bigint',
|
public ? string $type = 'bigint',
|
||||||
|
@ -22,8 +33,11 @@ class ForeignKey extends PrimaryKey {
|
||||||
public bool $nullable = false,
|
public bool $nullable = false,
|
||||||
public mixed $default = null,
|
public mixed $default = null,
|
||||||
public bool $readonly = false,
|
public bool $readonly = false,
|
||||||
|
public null|array|string|\Stringable $foreignKey = "",
|
||||||
public null|array|string|\Stringable $references = null,
|
public null|array|string|\Stringable $references = null,
|
||||||
|
public null|string $onDelete = self::NO_ACTION,
|
||||||
|
public null|string $onUpdate = self::NO_ACTION,
|
||||||
) {
|
) {
|
||||||
$this->references = Attribute::handleArrayField($this->references);
|
$this->references = Attribute::handleArrayField($this->references, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Ulmus\Attribute\Property;
|
||||||
|
|
||||||
|
#[\Attribute(\Attribute::TARGET_PROPERTY)]
|
||||||
|
class Index {
|
||||||
|
|
||||||
|
public const TYPE_PRIMARY = 'primary';
|
||||||
|
|
||||||
|
public const TYPE_INDEX = 'index';
|
||||||
|
|
||||||
|
public const TYPE_UNIQUE = 'unique';
|
||||||
|
|
||||||
|
public const TYPE_SPATIAL = 'spatial';
|
||||||
|
|
||||||
|
public const TYPE_FULLTEXT = 'fulltext';
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
public string $type = self::TYPE_INDEX,
|
||||||
|
) {}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ namespace Ulmus;
|
||||||
|
|
||||||
use Generator;
|
use Generator;
|
||||||
|
|
||||||
class EntityCollection extends \ArrayObject {
|
class EntityCollection extends \ArrayObject implements \JsonSerializable {
|
||||||
|
|
||||||
public ? string $entityClass = null;
|
public ? string $entityClass = null;
|
||||||
|
|
||||||
|
@ -340,6 +340,11 @@ class EntityCollection extends \ArrayObject {
|
||||||
return ( new $className() )->fromArray($dataset);
|
return ( new $className() )->fromArray($dataset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function jsonSerialize(): mixed
|
||||||
|
{
|
||||||
|
return $this->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
public function append($value) : void
|
public function append($value) : void
|
||||||
{
|
{
|
||||||
if ( is_array($value) ) {
|
if ( is_array($value) ) {
|
||||||
|
|
|
@ -301,15 +301,15 @@ trait EntityTrait {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Ignore]
|
#[Ignore]
|
||||||
public static function field($name, ? string $alias = Repository::DEFAULT_ALIAS) : EntityField
|
public static function field($name, null|string|bool $alias = Repository::DEFAULT_ALIAS) : EntityField
|
||||||
{
|
{
|
||||||
return new EntityField(static::class, $name, $alias ? Ulmus::repository(static::class)->adapter->adapter()->escapeIdentifier($alias, Adapter\AdapterInterface::IDENTIFIER_FIELD) : Repository::DEFAULT_ALIAS, Ulmus::resolveEntity(static::class));
|
return new EntityField(static::class, $name, $alias ? Ulmus::repository(static::class)->adapter->adapter()->escapeIdentifier($alias, Adapter\AdapterInterface::IDENTIFIER_FIELD) : ( $alias === false ? '' : Repository::DEFAULT_ALIAS ), Ulmus::resolveEntity(static::class));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Ignore]
|
#[Ignore]
|
||||||
public static function fields(array $fields, ? string $alias = Repository::DEFAULT_ALIAS) : string
|
public static function fields(array $fields, null|string|bool $alias = Repository::DEFAULT_ALIAS, string $separator = ', ') : string
|
||||||
{
|
{
|
||||||
return implode(', ', array_map(function($item) use ($alias){
|
return implode($separator, array_map(function($item) use ($alias){
|
||||||
return static::field($item, $alias);
|
return static::field($item, $alias);
|
||||||
}, $fields));
|
}, $fields));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue