- 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 | ||||
|     { | ||||
|         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 { | ||||
|             $position = "FIRST"; | ||||
|  | ||||
| @ -3,13 +3,20 @@ | ||||
| namespace Ulmus\Attribute; | ||||
| 
 | ||||
| use Ulmus\Common\EntityField; | ||||
| use Ulmus\Repository; | ||||
| 
 | ||||
| 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) ) { | ||||
|             $class = array_shift($field); | ||||
|             $field[1] ??= $alias; | ||||
| 
 | ||||
|             if (is_array($field[0])) { | ||||
|                 $field[] = $separator; | ||||
|                 return $class::fields(...$field); | ||||
|             } | ||||
| 
 | ||||
|             return $class::field(...$field); | ||||
|         } | ||||
|  | ||||
| @ -10,6 +10,17 @@ use Ulmus\Attribute\Attribute; | ||||
|  */ | ||||
| #[\Attribute(\Attribute::TARGET_PROPERTY)]
 | ||||
| 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 ? string $name = null, | ||||
|         public ? string $type = 'bigint', | ||||
| @ -22,8 +33,11 @@ class ForeignKey extends PrimaryKey { | ||||
|         public bool $nullable = false, | ||||
|         public mixed $default = null, | ||||
|         public bool $readonly = false, | ||||
|         public null|array|string|\Stringable $foreignKey = "", | ||||
|         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); | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										21
									
								
								src/Attribute/Property/Index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/Attribute/Property/Index.php
									
									
									
									
									
										Normal file
									
								
							| @ -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; | ||||
| 
 | ||||
| class EntityCollection extends \ArrayObject { | ||||
| class EntityCollection extends \ArrayObject implements \JsonSerializable { | ||||
| 
 | ||||
|     public ? string $entityClass = null; | ||||
| 
 | ||||
| @ -340,6 +340,11 @@ class EntityCollection extends \ArrayObject { | ||||
|         return ( new $className() )->fromArray($dataset); | ||||
|     } | ||||
| 
 | ||||
|     public function jsonSerialize(): mixed | ||||
|     { | ||||
|         return $this->toArray(); | ||||
|     } | ||||
| 
 | ||||
|     public function append($value) : void | ||||
|     { | ||||
|         if ( is_array($value) ) { | ||||
|  | ||||
| @ -301,15 +301,15 @@ trait EntityTrait { | ||||
|     } | ||||
| 
 | ||||
|     #[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]
 | ||||
|     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); | ||||
|         }, $fields)); | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user