Configuration   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
c 1
b 0
f 0
dl 0
loc 49
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getConfigTreeBuilder() 0 11 1
A getAdapters() 0 6 1
A getNormalizers() 0 16 1
1
<?php declare(strict_types=1);
2
3
namespace Mgid\PaginationBundle\DependencyInjection;
4
5
use Mgid\Component\Pagination\Adapter;
6
use Mgid\Component\Pagination\Normalizer;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\Config\Definition\ConfigurationInterface;
9
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
10
11
final class Configuration implements ConfigurationInterface
12
{
13
    /**
14
     * {@inheritdoc}
15
     */
16
    public function getConfigTreeBuilder()
17
    {
18
        $builder = new TreeBuilder(PaginationExtension::EXTENSION_ALIAS);
19
20
        /** @var ArrayNodeDefinition $rootNode */
21
        $rootNode = $builder->getRootNode();
22
23
        $rootNode->children()->variableNode('adapters')->defaultValue($this->getAdapters())->end();
24
        $rootNode->children()->variableNode('normalizers')->defaultValue($this->getNormalizers())->end();
25
26
        return $builder;
27
    }
28
29
    /**
30
     * @return array<string,string>
31
     */
32
    private function getAdapters(): array
33
    {
34
        return [
35
            'Doctrine\ORM\QueryBuilder' => Adapter\Doctrine\ORM\QueryBuilderAdapter::class,
36
            'Doctrine\ODM\MongoDB\Query\Builder' => Adapter\Doctrine\ODM\QueryBuilderAdapter::class,
37
            'Doctrine\ODM\MongoDB\Aggregation\Builder' => Adapter\Doctrine\ODM\AggregationBuilderAdapter::class,
38
        ];
39
    }
40
41
    /**
42
     * @return array<string,array<int,string>>
43
     */
44
    private function getNormalizers(): array
45
    {
46
        return [
47
            'Doctrine\ORM\QueryBuilder' => [
48
                Normalizer\ORM\LikeNormalizer::class,
49
                Normalizer\ListNormalizer::class,
50
            ],
51
            'Doctrine\ODM\MongoDB\Query\Builder' => [
52
                Normalizer\ListNormalizer::class,
53
                Normalizer\FloatNormalizer::class,
54
                Normalizer\IntegerNormalizer::class,
55
            ],
56
            'Doctrine\ODM\MongoDB\Aggregation\Builder' => [
57
                Normalizer\ListNormalizer::class,
58
                Normalizer\FloatNormalizer::class,
59
                Normalizer\IntegerNormalizer::class,
60
            ],
61
        ];
62
    }
63
}
64