Skip to content

Commit

Permalink
revert, register both drivers
Browse files Browse the repository at this point in the history
  • Loading branch information
PhiSYS committed May 3, 2021
1 parent ac203fc commit 3db9e31
Showing 1 changed file with 17 additions and 34 deletions.
51 changes: 17 additions & 34 deletions src/DependecyInjection/Compiler/DbalDatabaseManagerPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,48 +17,31 @@ class DbalDatabaseManagerPass implements CompilerPassInterface

public function process(ContainerBuilder $container)
{
$dsn = $container->getParameter(self::TESTING_DATABASE_DSN);

$databaseManagerClass = $this->getDatabaseManagerClass($dsn);

$connection = new Definition(
Connection::class,
[
['url' => $dsn],
['url' => $container->getParameter(self::TESTING_DATABASE_DSN)],
],
);

$connection->setFactory(DriverManager::class . '::getConnection');

$databaseManagerDefinition = new Definition(
$databaseManagerClass,
[
$connection,
],
);

$container->addDefinitions(
[$databaseManagerClass => $databaseManagerDefinition->setPublic(true)],
);
}

private function getDatabaseManagerClass($dsn): string
{
if (1 !== preg_match('/^([^:]+):\/\//', $dsn, $matches)) {
throw new \InvalidArgumentException("Invalid DSN format, should be driver:// shape.");
$databaseManagerClasses = [
MysqlDbalDatabaseManager::class,
PostgresDbalDatabaseManager::class,
];

foreach($databaseManagerClasses as $databaseManagerClass) {
$databaseManagerDefinition = new Definition(
$databaseManagerClass,
[
$connection,
],
);

$container->addDefinitions(
[$databaseManagerClass => $databaseManagerDefinition->setPublic(true)],
);
}

switch ($matches[1]) {
case 'mysql':
$databaseManagerClass = MysqlDbalDatabaseManager::class;
break;
case 'postgresql':
$databaseManagerClass = PostgresDbalDatabaseManager::class;
break;
default:
throw new \InvalidArgumentException('DSN not supported by phisys/testing library.');
}

return $databaseManagerClass;
}
}

0 comments on commit 3db9e31

Please sign in to comment.