Skip to content

Commit

Permalink
Merge pull request #590 from mabar/initialize-metadata
Browse files Browse the repository at this point in the history
[Nette] Initialize metadata on DIC startup - v4.0
  • Loading branch information
hrach authored Feb 8, 2023
2 parents 2abc593 + 4d289ec commit b8e87d4
Showing 1 changed file with 26 additions and 5 deletions.
31 changes: 26 additions & 5 deletions src/Bridges/NetteDI/OrmExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,19 @@ class OrmExtension extends CompilerExtension
/** @var string */
protected $modelClass;

/** @var array<mixed> */
private $configDefaults = [
'model' => Model::class,
'repositoryFinder' => PhpDocRepositoryFinder::class,
'initializeMetadata' => false,
];


public function loadConfiguration()
{
$this->builder = $this->getContainerBuilder();

$configDefaults = [
'model' => Model::class,
'repositoryFinder' => PhpDocRepositoryFinder::class,
];
$config = $this->validateConfig($configDefaults); // @phpstan-ignore-line
$config = $this->validateConfig($this->configDefaults); // @phpstan-ignore-line
$this->modelClass = $config['model'];

$repositoryFinderClass = $config['repositoryFinder'];
Expand Down Expand Up @@ -74,6 +77,12 @@ public function beforeCompile()
$this->setupDbalMapperDependencies();
}

public function afterCompile(ClassType $class)
{
$config = $this->validateConfig($this->configDefaults); // @phpstan-ignore-line

$this->initializeMetadata($class, $config['initializeMetadata']);
}

protected function setupCache(): void
{
Expand Down Expand Up @@ -183,4 +192,16 @@ protected function setupModel(string $modelClass, array $repositoriesConfig): vo
'metadataStorage' => $this->prefix('@metadataStorage'),
]);
}

protected function initializeMetadata(ClassType $classType, bool $init)
{
if (!$init) {
return;
}

$initialize = $classType->getMethod('initialize');
$initialize->addBody('$this->getService(?);', [
$this->prefix('metadataStorage'),
]);
}
}

0 comments on commit b8e87d4

Please sign in to comment.