From 3ff7eb72d762fe57de9e47fc3d30d1411a6306b8 Mon Sep 17 00:00:00 2001 From: Trehinos Date: Mon, 10 Jul 2023 16:53:04 +0200 Subject: [PATCH] DatabaseConfiguration update --- .../Configurations/DatabasesConfiguration.php | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/thor/Framework/Configurations/DatabasesConfiguration.php b/thor/Framework/Configurations/DatabasesConfiguration.php index db93506..aba7943 100644 --- a/thor/Framework/Configurations/DatabasesConfiguration.php +++ b/thor/Framework/Configurations/DatabasesConfiguration.php @@ -4,9 +4,10 @@ use PDO; use Thor\Configuration\Configuration; +use Thor\Configuration\ConfigurationFromFile; use Thor\Database\PdoExtension\PdoHandler; +use Thor\Database\PdoExtension\PdoRequester; use Thor\Database\PdoExtension\PdoCollection; -use Thor\Configuration\ConfigurationFromFile; final class DatabasesConfiguration extends ConfigurationFromFile { @@ -44,20 +45,40 @@ public function createPdoCollection(): PdoCollection foreach ($this->getArrayCopy() as $connectionName => $config) { $pdos->add( $connectionName, - new PdoHandler( - $config['dsn'] ?? '', - $config['user'] ?? null, - $config['password'] ?? null, - match (strtolower($config['case'] ?? 'natural')) { - 'upper' => PDO::CASE_UPPER, - 'lower' => PDO::CASE_LOWER, - default => PDO::CASE_NATURAL - }, - ) + $this->createPdoHandler($connectionName) ); } return $pdos; } + public function createPdoRequester(string $name): ?PdoRequester + { + $config = $this[$name] ?? null; + if ($config === null) { + return null; + } + + return new PdoRequester($this->createPdoHandler($name)); + } + + public function createPdoHandler(string $name): ?PdoHandler + { + $config = $this[$name] ?? null; + if ($config === null) { + return null; + } + + return new PdoHandler( + $config['dsn'] ?? '', + $config['user'] ?? null, + $config['password'] ?? null, + match (strtolower($config['case'] ?? 'natural')) { + 'upper' => PDO::CASE_UPPER, + 'lower' => PDO::CASE_LOWER, + default => PDO::CASE_NATURAL + }, + ); + } + }