40 lines
935 B
PHP
40 lines
935 B
PHP
<?php
|
|
|
|
namespace Ulmus\Entity\Sqlite;
|
|
|
|
use Ulmus\EntityCollection;
|
|
use Ulmus\Query\{From, Select};
|
|
use Ulmus\{Attribute\Obj\Table, Repository, Ulmus};
|
|
use Ulmus\Attribute\Property\{Field, Filter, FilterJoin, Relation, Join, Virtual, Where};
|
|
|
|
#[Table(name: "sqlite_master")]
|
|
class Schema
|
|
{
|
|
use \Ulmus\EntityTrait;
|
|
|
|
#[Field\Id]
|
|
public ? string $name;
|
|
|
|
#[Field]
|
|
public ? string $type;
|
|
|
|
#[Field(name: "tbl_name")]
|
|
public ? string $tableName;
|
|
|
|
#[Field]
|
|
public ? int $rootpage;
|
|
|
|
#[Field]
|
|
public ? string $sql;
|
|
|
|
#[Virtual(method: "filterColumns")]
|
|
public EntityCollection $columns;
|
|
|
|
public function filterColumns() : EntityCollection
|
|
{
|
|
$adapter = Ulmus::$registeredAdapters[$this->loadedFromAdapter];
|
|
|
|
return Column::repository(Repository\SqliteRepository::DEFAULT_ALIAS, $adapter)
|
|
->pragma('table_info', $this->tableName)->collectionFromQuery();
|
|
}
|
|
} |