33 lines
981 B
PHP
33 lines
981 B
PHP
|
<?php
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace GamesShop;
|
||
|
|
||
|
use Doctrine\DBAL\Connection;
|
||
|
use Doctrine\DBAL\DriverManager;
|
||
|
use Doctrine\ORM\EntityManager;
|
||
|
use Doctrine\ORM\ORMSetup;
|
||
|
use GamesShop\Environment\EnvironmentHandler;
|
||
|
|
||
|
final class DoctrineManager
|
||
|
{
|
||
|
public function setup() {
|
||
|
$container = ContainerHandler::getInstance();
|
||
|
|
||
|
$environmentHandler = $container->get(EnvironmentHandler::class);
|
||
|
|
||
|
$config = ORMSetup::createAttributeMetadataConfiguration(
|
||
|
paths: [ Paths::PHP_SOURCE_PATH . '/Entities' ],
|
||
|
isDevMode: !$environmentHandler->isProduction()
|
||
|
);
|
||
|
|
||
|
$dbEnvironment = $environmentHandler->getDatabaseEnvironment();
|
||
|
$connection = DriverManager::getConnection($dbEnvironment->getDoctrineConfig());
|
||
|
|
||
|
$entityManager = new EntityManager($connection, $config);
|
||
|
|
||
|
$container->addShared(EntityManager::class, $entityManager);
|
||
|
$container->addShared(Connection::class, $connection);
|
||
|
}
|
||
|
|
||
|
}
|