- Added a default searchRequest() method to entityTrait
This commit is contained in:
parent
d01624b8aa
commit
338b599d39
|
@ -3,7 +3,12 @@
|
||||||
namespace Ulmus;
|
namespace Ulmus;
|
||||||
|
|
||||||
use Notes\Attribute\Ignore;
|
use Notes\Attribute\Ignore;
|
||||||
use Ulmus\{ Repository, Query, Common\EntityResolver, Common\EntityField };
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Ulmus\{
|
||||||
|
Common\EntityResolver,
|
||||||
|
Common\EntityField,
|
||||||
|
SearchRequest\SearchRequestInterface,
|
||||||
|
SearchRequest\SearchRequestPaginationTrait};
|
||||||
use Ulmus\Annotation\Classes\{ Method, Table, Collation, };
|
use Ulmus\Annotation\Classes\{ Method, Table, Collation, };
|
||||||
use Ulmus\Annotation\Property\{ Field, Filter, FilterJoin, Relation, OrderBy, Where, OrWhere, Join, Virtual, On, WithJoin, };
|
use Ulmus\Annotation\Property\{ Field, Filter, FilterJoin, Relation, OrderBy, Where, OrWhere, Join, Virtual, On, WithJoin, };
|
||||||
use Ulmus\Annotation\Property\Field\{ PrimaryKey, Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, Bigint, Tinyint, Text, Mediumtext, Longtext, Blob, Mediumblob, Longblob, };
|
use Ulmus\Annotation\Property\Field\{ PrimaryKey, Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, Bigint, Tinyint, Text, Mediumtext, Longtext, Blob, Mediumblob, Longblob, };
|
||||||
|
@ -313,4 +318,51 @@ trait EntityTrait {
|
||||||
return static::field($item, $alias);
|
return static::field($item, $alias);
|
||||||
}, $fields));
|
}, $fields));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Ignore]
|
||||||
|
public static function searchRequest(...$arguments) : SearchRequestInterface
|
||||||
|
{
|
||||||
|
return new class() implements SearchRequestInterface
|
||||||
|
{
|
||||||
|
use SearchRequestPaginationTrait;
|
||||||
|
|
||||||
|
public function fromRequest(ServerRequestInterface $request) : self
|
||||||
|
{
|
||||||
|
$get = new \ArrayObject(array_filter($request->getQueryParams(), function($i) { return $i !== ""; }));
|
||||||
|
|
||||||
|
$this->page = $get->offsetExists('page') ? $get['page'] : 1;
|
||||||
|
$this->limit = 100;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function filter(Repository $repository) : Repository
|
||||||
|
{
|
||||||
|
return $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function wheres() : iterable
|
||||||
|
{
|
||||||
|
return array_filter([
|
||||||
|
], fn($i) => ! is_null($i) ) + [ ];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function likes(): iterable
|
||||||
|
{
|
||||||
|
return array_filter([
|
||||||
|
], fn($i) => ! is_null($i) ) + [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function groups(): iterable
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function orders(): iterable
|
||||||
|
{
|
||||||
|
return array_filter([
|
||||||
|
], fn($e) => ! is_null($e) && $e !== "" );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ class FieldDefinition {
|
||||||
|
|
||||||
public array $tags;
|
public array $tags;
|
||||||
|
|
||||||
public /* ? string */ $default;
|
public mixed $default;
|
||||||
|
|
||||||
public ? int $precision;
|
public ? int $precision;
|
||||||
|
|
||||||
|
@ -37,6 +37,10 @@ class FieldDefinition {
|
||||||
$this->builtIn = $data['builtin'];
|
$this->builtIn = $data['builtin'];
|
||||||
$this->tags = $data['tags'];
|
$this->tags = $data['tags'];
|
||||||
|
|
||||||
|
if (isset($data['value'])) {
|
||||||
|
$this->default = $data['value'];
|
||||||
|
}
|
||||||
|
|
||||||
$field = $this->getFieldTag();
|
$field = $this->getFieldTag();
|
||||||
$adapter->whitelistAttributes($field->attributes);
|
$adapter->whitelistAttributes($field->attributes);
|
||||||
|
|
||||||
|
@ -66,7 +70,7 @@ class FieldDefinition {
|
||||||
$this->isUnsigned() ? $syntax['unsigned'] : null,
|
$this->isUnsigned() ? $syntax['unsigned'] : null,
|
||||||
$this->nullable ? "NULL" : "NOT NULL",
|
$this->nullable ? "NULL" : "NOT NULL",
|
||||||
$this->update ? "ON UPDATE {$this->update}" : null,
|
$this->update ? "ON UPDATE {$this->update}" : null,
|
||||||
$default ? "DEFAULT $default" : null,
|
$default !== null ? "DEFAULT $default" : null,
|
||||||
$this->isPrimaryKey() ? $syntax['pk'] : null,
|
$this->isPrimaryKey() ? $syntax['pk'] : null,
|
||||||
$this->isAutoIncrement() ? $syntax['ai'] : null,
|
$this->isAutoIncrement() ? $syntax['ai'] : null,
|
||||||
]));
|
]));
|
||||||
|
@ -84,9 +88,20 @@ class FieldDefinition {
|
||||||
return $this->getFieldTag()->name ?? $this->name;
|
return $this->getFieldTag()->name ?? $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDefault() : ? string
|
public function getDefault() : mixed
|
||||||
{
|
{
|
||||||
return $this->getFieldTag()->attributes['default'] ?? ( $this->nullable ? "NULL" : null ) ;
|
if ( isset($this->default) ) {
|
||||||
|
if (is_bool($this->default)) {
|
||||||
|
return (int) $this->default;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Specific default cases here ..
|
||||||
|
|
||||||
|
return $this->default;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fallback on attribute's default value
|
||||||
|
return $this->getFieldTag()->default ?? ( $this->nullable ? "NULL" : null ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isPrimaryKey() : bool
|
public function isPrimaryKey() : bool
|
||||||
|
|
Loading…
Reference in New Issue