- Worked on SQLite adapter mostly

This commit is contained in:
Dave M. 2023-11-03 08:25:35 -04:00
parent 8e0dce3e71
commit 07ae8faaac
4 changed files with 18 additions and 7 deletions

View File

@ -163,6 +163,14 @@ class SQLite implements AdapterInterface, MigrateInterface, SqlAdapterInterface
$pdo->sqliteCreateFunction('length', fn($string) => strlen($string), 1); $pdo->sqliteCreateFunction('length', fn($string) => strlen($string), 1);
$pdo->sqliteCreateFunction('lcase', fn($string) => strtolower($string), 1); $pdo->sqliteCreateFunction('lcase', fn($string) => strtolower($string), 1);
$pdo->sqliteCreateFunction('ucase', fn($string) => strtoupper($string), 1); $pdo->sqliteCreateFunction('ucase', fn($string) => strtoupper($string), 1);
$pdo->sqliteCreateFunction('md5', fn($string) => md5($string), 1);
$pdo->sqliteCreateFunction('sha1', fn($string) => sha1($string), 1);
$pdo->sqliteCreateFunction('sha256', fn($string) => hash('sha256', $string), 1);
$pdo->sqliteCreateFunction('sha512', fn($string) => hash('sha512', $string), 1);
$pdo->sqliteCreateFunction('whirlpool', fn($string) => hash('whirlpool', $string), 1);
$pdo->sqliteCreateFunction('murmur3a', fn($string) => hash('murmur3a', $string), 1);
$pdo->sqliteCreateFunction('murmur3c', fn($string) => hash('murmur3c', $string), 1);
$pdo->sqliteCreateFunction('murmur3f', fn($string) => hash('murmur3f', $string), 1);
$pdo->sqliteCreateFunction('left', fn($string, $length) => substr($string, 0, $length), 2); $pdo->sqliteCreateFunction('left', fn($string, $length) => substr($string, 0, $length), 2);
$pdo->sqliteCreateFunction('right', fn($string, $length) => substr($string, -$length), 2); $pdo->sqliteCreateFunction('right', fn($string, $length) => substr($string, -$length), 2);
$pdo->sqliteCreateFunction('strcmp', fn($s1, $s2) => strcmp($s1, $s2), 2); $pdo->sqliteCreateFunction('strcmp', fn($s1, $s2) => strcmp($s1, $s2), 2);

View File

@ -134,7 +134,7 @@ trait SqlAdapterTrait
case is_object($value): case is_object($value):
return Ulmus::convertObject($value); return Ulmus::convertObject($value);
case is_array($value): case is_array($value):
return json_encode($value); return json_encode($value);
case is_bool($value): case is_bool($value):

View File

@ -360,7 +360,7 @@ class EntityCollection extends \ArrayObject implements \JsonSerializable {
public function jsonSerialize(): mixed public function jsonSerialize(): mixed
{ {
return $this->toArray(); return $this->toArray(true);
} }
public function append($value) : void public function append($value) : void

View File

@ -141,7 +141,7 @@ trait EntityTrait {
return $this->entityFillFromDataset($dataset); return $this->entityFillFromDataset($dataset);
} }
public function entityGetDataset(bool $includeRelations = false, bool $returnSource = false) : array public function entityGetDataset(bool $includeRelations = false, bool $returnSource = false, bool $rewriteValue = true) : array
{ {
if ( $returnSource ) { if ( $returnSource ) {
return $this->entityLoadedDataset; return $this->entityLoadedDataset;
@ -155,7 +155,10 @@ trait EntityTrait {
$annotation = $entityResolver->searchFieldAnnotation($key, [ Attribute\Property\Field::class, Field::class ]); $annotation = $entityResolver->searchFieldAnnotation($key, [ Attribute\Property\Field::class, Field::class ]);
if ( isset($this->$key) ) { if ( isset($this->$key) ) {
$dataset[$annotation->name ?? $key] = static::repository()->adapter->adapter()->writableValue($this->$key); $dataset[$annotation->name ?? $key] = $rewriteValue?
static::repository()->adapter->adapter()->writableValue($this->$key)
:
$this->$key;
} }
elseif ( $field['nullable'] ) { elseif ( $field['nullable'] ) {
$dataset[$annotation->name ?? $key] = null; $dataset[$annotation->name ?? $key] = null;
@ -165,7 +168,7 @@ trait EntityTrait {
# @TODO Must fix recursive bug ! # @TODO Must fix recursive bug !
if ($includeRelations) { if ($includeRelations) {
foreach($entityResolver->properties as $name => $field){ foreach($entityResolver->properties as $name => $field){
$relation = $entityResolver->searchFieldAnnotation($key, [ Attribute\Property\Relation::class. Relation::class ] ); $relation = $entityResolver->searchFieldAnnotation($name, [ Attribute\Property\Relation::class, Relation::class ] );
if ( $relation && isset($this->$name) && ($relation->entity ?? $relation->bridge) !== static::class ) { if ( $relation && isset($this->$name) && ($relation->entity ?? $relation->bridge) !== static::class ) {
if ( null !== $value = $this->$name ?? null ) { if ( null !== $value = $this->$name ?? null ) {
@ -192,7 +195,7 @@ trait EntityTrait {
#[Ignore] #[Ignore]
public function toArray($includeRelations = false, array $filterFields = null) : array public function toArray($includeRelations = false, array $filterFields = null) : array
{ {
$dataset = $this->entityGetDataset($includeRelations); $dataset = $this->entityGetDataset($includeRelations, false, false);
return $filterFields ? array_intersect_key($dataset, array_flip($filterFields)) : $dataset; return $filterFields ? array_intersect_key($dataset, array_flip($filterFields)) : $dataset;
} }
@ -275,7 +278,7 @@ trait EntityTrait {
#[Ignore] #[Ignore]
public function jsonSerialize() : mixed public function jsonSerialize() : mixed
{ {
return $this->entityGetDataset(); return $this->entityGetDataset(true, false, false);
} }
#[Ignore] #[Ignore]