<?php

namespace Ulmus\Entity\Mssql;

use Ulmus\EntityCollection,
    Ulmus\Entity\Field\Datetime;

use Ulmus\{Attribute\Obj\Table as TableObj, Ulmus};
use Ulmus\Attribute\Property\{Field, Filter, FilterJoin, Relation, Join, Virtual, Where};
use Ulmus\Repository;

#[TableObj(name: "tables", schema: "information_schema")]
class Table extends \Ulmus\Entity\InformationSchema\Table
{
    #[Relation(type: "oneToMany", key: "name", foreignKey: [ Column::class, 'tableName' ], entity: Column::class)]
    #[Where('TABLE_SCHEMA', generateValue: [ Table::class, 'getSchema' ])]
    ##[Filter(method: "filterColumns")]
    public EntityCollection $columns;

    public function filterColumns() : Repository
    {
        $adapter = Ulmus::$registeredAdapters[$this->loadedFromAdapter];

        return Column::repository(Repository\MssqlRepository::DEFAULT_ALIAS, $adapter);
    }
}