- Worked on support for multiple adapters based on @Table() annotation's entity

This commit is contained in:
mcndave committed 2020-02-12 22:56:53 -05:00
1 parent d01e99b18f
commit 79fdabe786
7 files changed
+47 -21

No files matched your search

+16 -5
View File
@@ -10,13 +10,15 @@ abstract class Ulmus
public static string $queryBuilderClass = "\\Ulmus\\QueryBuilder";
public static array $registeredAdapters = [];
public static ConnectionAdapter $defaultAdapter;
public static Entity\ObjectInstanciator $objectInstanciator;
public static array $resolved = [];
public static function iterateQueryBuilder(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null) : Generator
public static function iterateQueryBuilder(QueryBuilder $queryBuilder, ? ConnectionAdapter $adapter = null) : Generator
{
$sql = $queryBuilder->render();
$statement = ( $adapter ?: static::$defaultAdapter )->pdo->select($sql, $queryBuilder->parameters ?? []);
@@ -32,12 +34,12 @@ abstract class Ulmus
];
}
public static function pdo(?ConnectionAdapter $adapter = null) : Common\PdoObject
public static function pdo(? ConnectionAdapter $adapter = null) : Common\PdoObject
{
return ( $adapter ?: static::$defaultAdapter )->pdo;
}
public static function runQuery(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null)
public static function runQuery(QueryBuilder $queryBuilder, ? ConnectionAdapter $adapter = null)
{
return static::pdo($adapter)->runQuery($queryBuilder->render(), array_merge($queryBuilder->values ?? [], $queryBuilder->parameters ?? []));
}
@@ -67,7 +69,16 @@ abstract class Ulmus
return ( static::$objectInstanciator ?? static::$objectInstanciator = new Entity\ObjectInstanciator() )->convert($obj);
}
protected static function fetchQueryBuilder(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null) : array
public static function registerAdapter(ConnectionAdapter $adapter, bool $default = false) : void
{
if ($default) {
static::$defaultAdapter = $adapter;
}
static::$registeredAdapters[$adapter->name] = $adapter;
}
protected static function fetchQueryBuilder(QueryBuilder $queryBuilder, ? ConnectionAdapter $adapter = null) : array
{
return ( $adapter ?: static::$defaultAdapter )->pdo->select($queryBuilder->render(), $queryBuilder->parameters ?? [])->fetchAll();
}