From b5e92f493938c57f4f32bac06241418aaa24434f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Thu, 25 Apr 2019 13:37:15 +0200 Subject: [PATCH] Add Doctrine Connection factory [MAILPOET-2014] --- lib/DI/ContainerConfigurator.php | 5 ++++ lib/Doctrine/ConnectionFactory.php | 29 +++++++++++++++++++ .../Doctrine/ConnectionFactoryTest.php | 27 +++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 lib/Doctrine/ConnectionFactory.php create mode 100644 tests/integration/Doctrine/ConnectionFactoryTest.php diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 10959839a3..f56ef26892 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -91,6 +91,11 @@ class ContainerConfigurator implements IContainerConfigurator { $container->register(\MailPoet\Config\Renderer::class) ->setPublic(true) ->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']); + // Doctrine + $container->autowire(\MailPoet\Doctrine\ConnectionFactory::class); + $container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class) + ->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection']) + ->setPublic(true); // Cron $container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true); $container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true); diff --git a/lib/Doctrine/ConnectionFactory.php b/lib/Doctrine/ConnectionFactory.php new file mode 100644 index 0000000000..38c1921d7e --- /dev/null +++ b/lib/Doctrine/ConnectionFactory.php @@ -0,0 +1,29 @@ + self::DRIVER, + 'platform' => new $platform_class, + 'host' => Env::$db_host, + 'port' => Env::$db_port, + 'socket' => Env::$db_socket, + 'user' => Env::$db_username, + 'password' => Env::$db_password, + 'charset' => Env::$db_charset, + 'dbname' => Env::$db_name, + ]; + return DriverManager::getConnection($connection_params); + } +} diff --git a/tests/integration/Doctrine/ConnectionFactoryTest.php b/tests/integration/Doctrine/ConnectionFactoryTest.php new file mode 100644 index 0000000000..35a1698c27 --- /dev/null +++ b/tests/integration/Doctrine/ConnectionFactoryTest.php @@ -0,0 +1,27 @@ +createConnection(); + + expect($connection->getWrappedConnection())->isInstanceOf(PDO::class); + expect($connection->getDriver())->isInstanceOf(PDOMySql\Driver::class); + expect($connection->getDatabasePlatform())->isInstanceOf(MySqlPlatform::class); + expect($connection->getHost())->equals(Env::$db_host); + expect($connection->getPort())->equals(Env::$db_port); + expect($connection->getParams()['socket'])->equals(Env::$db_socket); + expect($connection->getUsername())->equals(Env::$db_username); + expect($connection->getPassword())->equals(Env::$db_password); + expect($connection->getParams()['charset'])->equals(Env::$db_charset); + expect($connection->getDatabase())->equals(Env::$db_name); + } +}