Add Doctrine EntityManager configuration

[MAILPOET-2014]
This commit is contained in:
Jan Jakeš
2019-04-25 13:42:54 +02:00
committed by M. Shull
parent 765d21ed6b
commit ca1311abf6
3 changed files with 60 additions and 0 deletions

View File

@ -92,10 +92,17 @@ class ContainerConfigurator implements IContainerConfigurator {
->setPublic(true)
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
// Doctrine
$container->autowire(\MailPoet\Doctrine\ConfigurationFactory::class);
$container->autowire(\MailPoet\Doctrine\ConnectionFactory::class);
$container->autowire(\MailPoet\Doctrine\EntityManagerFactory::class);
$container->autowire(\MailPoetVendor\Doctrine\ORM\Configuration::class)
->setFactory([new Reference(\MailPoet\Doctrine\ConfigurationFactory::class), 'createConfiguration']);
$container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class)
->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection'])
->setPublic(true);
$container->autowire(\MailPoetVendor\Doctrine\ORM\EntityManager::class)
->setFactory([new Reference(\MailPoet\Doctrine\EntityManagerFactory::class), 'createEntityManager'])
->setPublic(true);
// Cron
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);

View File

@ -0,0 +1,28 @@
<?php
namespace MailPoet\Doctrine;
use MailPoetVendor\Doctrine\ORM\Configuration;
use MailPoetVendor\Doctrine\ORM\Mapping\UnderscoreNamingStrategy;
class ConfigurationFactory {
const ENTITY_DIR = __DIR__ . '/../Doctrine/Entities';
/** @var bool */
private $is_dev_mode;
function __construct() {
$this->is_dev_mode = WP_DEBUG;
}
function createConfiguration() {
$configuration = new Configuration();
$configuration->setNamingStrategy(new UnderscoreNamingStrategy());
$configuration->setMetadataDriverImpl($configuration->newDefaultAnnotationDriver([self::ENTITY_DIR]));
if (!$this->is_dev_mode) {
$configuration->ensureProductionSettings();
}
return $configuration;
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace MailPoet\Doctrine;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\ORM\Configuration;
use MailPoetVendor\Doctrine\ORM\EntityManager;
class EntityManagerFactory {
/** @var Connection */
private $connection;
/** @var Configuration */
private $configuration;
function __construct(Connection $connection, Configuration $configuration) {
$this->connection = $connection;
$this->configuration = $configuration;
}
function createEntityManager() {
return EntityManager::create($this->connection, $this->configuration);
}
}