Issues (21)

src/DependencyInjection/Configuration.php (1 issue)

1
<?php
2
3
namespace Facile\MongoDbBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\NodeBuilder;
6
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
7
use Symfony\Component\Config\Definition\ConfigurationInterface;
8
9
/**
10
 * Class Configuration.
11
 *
12
 * @internal
13
 */
14
final class Configuration implements ConfigurationInterface
15
{
16
    private const READ_PREFERENCE_VALID_OPTIONS = ['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'];
17
18
    /**
19
     * {@inheritdoc}
20
     */
21 13
    public function getConfigTreeBuilder(): TreeBuilder
22
    {
23 13
        $treeBuilder = new TreeBuilder('mongo_db_bundle');
24 13
        $rootBuilder = \method_exists(TreeBuilder::class, 'getRootNode')
25
            ? $treeBuilder->getRootNode()
26 13
            : $treeBuilder->root('mongo_db_bundle');
0 ignored issues
show
Deprecated Code introduced by
The function Symfony\Component\Config...der\TreeBuilder::root() has been deprecated: since Symfony 4.3, pass the root name to the constructor instead ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

26
            : /** @scrutinizer ignore-deprecated */ $treeBuilder->root('mongo_db_bundle');

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
27 13
28 13
        self::addDataCollection($rootBuilder->children());
29
        self::addClients($rootBuilder->children());
30 13
        self::addConnections($rootBuilder->children());
31
        self::addDriversOption($rootBuilder->children());
32
33 13
        return $treeBuilder;
34
    }
35
36 13
    private static function addDataCollection(NodeBuilder $builder): void
37 13
    {
38 13
        $builder
39 13
            ->booleanNode('data_collection')
40
            ->defaultTrue()
41 13
            ->info('Disables Data Collection if needed');
42
    }
43
44 13
    private static function addClients(NodeBuilder $builder): void
45 13
    {
46 13
        $clientsBuilder = $builder
47 13
            ->arrayNode('clients')
48 13
            ->isRequired()
49 13
            ->requiresAtLeastOneElement()
50
            ->useAttributeAsKey('name')
51 13
            ->prototype('array')
52
            ->children();
53
54 13
        self::addClientsHosts($clientsBuilder);
55 13
56 13
        $clientsBuilder
57
            ->scalarNode('uri')
58
            ->defaultNull()
59 13
            ->info('Overrides hosts configuration');
60 13
61
        $clientsBuilder
62
            ->scalarNode('username')
63 13
            ->defaultValue('');
64 13
65
        $clientsBuilder
66
            ->scalarNode('password')
67 13
            ->defaultValue('');
68 13
69 13
        $clientsBuilder
70
            ->scalarNode('authSource')
71
            ->defaultNull()
72 13
            ->info('Database name associated with the user’s credentials');
73 13
74 13
        $clientsBuilder
75 13
            ->scalarNode('readPreference')
76 13
            ->defaultValue('primaryPreferred')
77
            ->validate()
78
            ->ifNotInArray(self::READ_PREFERENCE_VALID_OPTIONS)
79 13
            ->thenInvalid('Invalid readPreference option %s, must be one of [' . implode(', ', self::READ_PREFERENCE_VALID_OPTIONS) . ']');
80 13
81
        $clientsBuilder
82
            ->scalarNode('replicaSet')
83 13
            ->defaultNull();
84 13
85
        $clientsBuilder
86
            ->booleanNode('ssl')
87 13
            ->defaultFalse();
88 13
89 13
        $clientsBuilder
90
            ->integerNode('connectTimeoutMS')
91 13
            ->defaultNull();
92
    }
93
94 13
    private static function addClientsHosts(NodeBuilder $builder): void
95 13
    {
96 13
        $hostsBuilder = $builder
97 13
            ->arrayNode('hosts')
98
            ->info('Hosts addresses and ports')
99
            ->prototype('array')
100 13
            ->children();
101 13
102
        $hostsBuilder
103
            ->scalarNode('host')
104 13
            ->isRequired();
105 13
106 13
        $hostsBuilder
107
            ->integerNode('port')
108 13
            ->defaultValue(27017);
109
    }
110
111 13
    private static function addDriversOption(NodeBuilder $builder): void
112 13
    {
113 13
        $builder
114 13
            ->scalarNode('driverOptions');
115 13
    }
116 13
117
    private static function addConnections(NodeBuilder $builder): void
118
    {
119 13
        $connectionBuilder = $builder
120 13
            ->arrayNode('connections')
121 13
            ->isRequired()
122
            ->requiresAtLeastOneElement()
123
            ->useAttributeAsKey('name')
124 13
            ->prototype('array')
125 13
            ->children();
126 13
127 13
        $connectionBuilder
128
            ->scalarNode('client_name')
129
            ->isRequired()
130
            ->info('Desired client name');
131
132
        $connectionBuilder
133
            ->scalarNode('database_name')
134
            ->isRequired()
135
            ->info('Database name');
136
    }
137
}
138