diff --git a/src/Domain/Infra/DependencyInjection/BundleHelper.php b/src/Domain/Infra/DependencyInjection/BundleHelper.php index 357d79f9..8ccc9b94 100644 --- a/src/Domain/Infra/DependencyInjection/BundleHelper.php +++ b/src/Domain/Infra/DependencyInjection/BundleHelper.php @@ -213,6 +213,7 @@ private static function initDoctrineOrm(ContainerBuilder $container): void ->setPublic(false) ->setArgument('$dirName', 'msgphp/doctrine-mapping') ->setArgument('$mappingFiles', '%msgphp.doctrine.mapping_files%') + ->setArgument('$configDir', '%msgphp.doctrine.config_folder%') ->addTag('kernel.cache_warmer', ['priority' => 100]); } } diff --git a/src/Domain/Infra/DependencyInjection/ExtensionHelper.php b/src/Domain/Infra/DependencyInjection/ExtensionHelper.php index 64b42d72..fa046c5c 100644 --- a/src/Domain/Infra/DependencyInjection/ExtensionHelper.php +++ b/src/Domain/Infra/DependencyInjection/ExtensionHelper.php @@ -71,6 +71,7 @@ public static function configureDoctrineOrm(ContainerBuilder $container, array $ $container->setParameter($param = 'msgphp.doctrine.type_config', $container->hasParameter($param) ? $typeConfig + $container->getParameter($param) : $typeConfig); $container->setParameter($param = 'msgphp.doctrine.mapping_files', $container->hasParameter($param) ? array_merge($container->getParameter($param), $mappingFiles) : $mappingFiles); + $container->setParameter($param = 'msgphp.doctrine.config_folder', $container->hasParameter($param) ? $container->getParameter($param) : $container->getParameter('kernel.project_dir') . '/config/packages/msgphp/doctrine'); $container->prependExtensionConfig('doctrine', [ 'dbal' => [ diff --git a/src/Domain/Infra/Doctrine/MappingCacheWarmer.php b/src/Domain/Infra/Doctrine/MappingCacheWarmer.php index e4dd06d3..b242d4be 100644 --- a/src/Domain/Infra/Doctrine/MappingCacheWarmer.php +++ b/src/Domain/Infra/Doctrine/MappingCacheWarmer.php @@ -16,11 +16,13 @@ final class MappingCacheWarmer implements CacheWarmerInterface { private $dirName; private $mappingFiles; + private $configDir; - public function __construct(string $dirName, array $mappingFiles) + public function __construct(string $dirName, array $mappingFiles, string $configDir = null) { $this->dirName = $dirName; $this->mappingFiles = $mappingFiles; + $this->configDir = $configDir; } public function isOptional(): bool @@ -34,7 +36,13 @@ public function warmUp($cacheDir): void $filesystem->mkdir($target = $cacheDir.'/'.$this->dirName); foreach ($this->mappingFiles as $file) { - $filesystem->copy($file, $target.'/'.basename($file)); + $filename = basename($file); + + if ($this->configDir && $filesystem->exists($this->configDir.'/'.$filename)) { + $filesystem->copy($this->configDir.'/'.$filename, $target.'/'.basename($file)); + } else { + $filesystem->copy($file, $target.'/'.$filename); + } } } }