39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Ulmus\Repository;
|
|
|
|
use Ulmus\{EntityCollection, Repository, Query, Entity, Ulmus, Common};
|
|
|
|
class MssqlRepository extends Repository {
|
|
|
|
protected function finalizeQuery() : void
|
|
{
|
|
$delete = $this->queryBuilder->getFragment(Query\Delete::class);
|
|
$offset = $this->queryBuilder->getFragment(Query\MsSQL\Offset::class);
|
|
|
|
if ($offset) {
|
|
if ( $delete ) {
|
|
$delete->top = $offset->limit;
|
|
|
|
$this->queryBuilder->removeFragment(Query\MsSQL\Offset::class);
|
|
}
|
|
elseif (null === $this->queryBuilder->getFragment(Query\OrderBy::class)) {
|
|
$this->orderBy("(SELECT 0)");
|
|
}
|
|
}
|
|
}
|
|
|
|
public function listColumns(? string $table = null) : EntityCollection
|
|
{
|
|
$table ??= $this->entityResolver->tableName();
|
|
$this->showColumnsSqlQuery($table);
|
|
|
|
return $this->collectionFromQuery(Entity\Mssql\Column::class)->iterate(fn($e) => $e->tableName = $table);
|
|
}
|
|
|
|
protected function serverRequestCountRepository() : Repository
|
|
{
|
|
return new static($this->entityClass, $this->alias, $this->adapter);
|
|
}
|
|
}
|