- First draft of current WIP
This commit is contained in:
commit
b73d046e0a
47 files changed
+2797
No files matched your search
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus;
|
||||
|
||||
use Generator;
|
||||
|
||||
abstract class Ulmus
|
||||
{
|
||||
public static string $repositoryClass = "\\Ulmus\\Repository";
|
||||
|
||||
public static string $queryBuilderClass = "\\Ulmus\\QueryBuilder";
|
||||
|
||||
public static ConnectionAdapter $defaultAdapter;
|
||||
|
||||
public static array $resolved = [];
|
||||
|
||||
protected static function fetchQueryBuilder(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null) : array
|
||||
{
|
||||
$sql = $queryBuilder->render();
|
||||
return ( $adapter ?: static::$defaultAdapter )->pdo->select($sql, $queryBuilder->parameters ?? [])->fetchAll();
|
||||
}
|
||||
|
||||
public static function iterateQueryBuilder(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null) : Generator
|
||||
{
|
||||
$sql = $queryBuilder->render();
|
||||
$statement = ( $adapter ?: static::$defaultAdapter )->pdo->select($sql, $queryBuilder->parameters ?? []);
|
||||
|
||||
while ( $row = $statement->fetch() ) {
|
||||
yield $row;
|
||||
}
|
||||
|
||||
$statement->closeCursor();
|
||||
|
||||
return [
|
||||
'count' => $statement->rowCount(),
|
||||
];
|
||||
}
|
||||
|
||||
public static function resolveEntity(string $entityClass) : Common\EntityResolver
|
||||
{
|
||||
return static::$resolved[$entityClass] ?? static::$resolved[$entityClass] = new Common\EntityResolver($entityClass);
|
||||
}
|
||||
|
||||
public static function repository(...$arguments) : Repository
|
||||
{
|
||||
return new static::$repositoryClass(...$arguments);
|
||||
}
|
||||
|
||||
public static function queryBuilder(...$arguments) : QueryBuilder
|
||||
{
|
||||
return new static::$queryBuilderClass(...$arguments);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user