Passed
Push — 1.0.x ( 3b7498...dee16f )
by Koldo
02:59
created

FeatureRepositoryFactoryPass   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 12
c 1
b 0
f 0
dl 0
loc 18
ccs 11
cts 11
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 16 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Pheature\Community\Symfony\DependencyInjection;
6
7
use Doctrine\DBAL\Connection;
8
use Pheature\Core\Toggle\Write\FeatureRepository;
9
use Pheature\Crud\Psr11\Toggle\FeatureRepositoryFactory;
10
use Pheature\Crud\Psr11\Toggle\ToggleConfig;
11
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
12
use Symfony\Component\DependencyInjection\ContainerBuilder;
13
use Symfony\Component\DependencyInjection\Reference;
14
15
final class FeatureRepositoryFactoryPass implements CompilerPassInterface
16
{
17 2
    public function process(ContainerBuilder $container): void
18
    {
19
        /** @var array<array<mixed>> $pheatureFlagsConfig */
20 2
        $pheatureFlagsConfig = $container->getExtensionConfig('pheature_flags');
21 2
        $mergedConfig = array_merge(...$pheatureFlagsConfig);
22
23 2
        $repository = $container->register(FeatureRepository::class, FeatureRepository::class)
24 2
            ->setAutowired(false)
25 2
            ->setLazy(true)
26 2
            ->setFactory([FeatureRepositoryFactory::class, 'create'])
27 2
            ->addArgument(new Reference(ToggleConfig::class));
28
29 2
        if ('dbal' === $mergedConfig['driver']) {
30 1
            $repository->addArgument(new Reference(Connection::class));
31
        } else {
32 1
            $repository->addArgument(null);
33
        }
34 2
    }
35
}
36