ConfigProvider::__invoke()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 94
Code Lines 77

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 5
Bugs 1 Features 2
Metric Value
cc 1
eloc 77
c 5
b 1
f 2
nc 1
nop 0
dl 0
loc 94
ccs 0
cts 4
cp 0
crap 2
rs 8.5018

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Antidot\Persistence\Doctrine\Container\Config;
6
7
use Antidot\Cli\Application\Console;
8
use Antidot\Persistence\Doctrine\Container\AntidotCliDoctrineDelegatorFactory;
9
use ContainerInteropDoctrine\ConnectionFactory;
10
use ContainerInteropDoctrine\EntityManagerFactory;
11
use Doctrine\DBAL\Connection;
12
use Doctrine\DBAL\Tools\Console\Command\ReservedWordsCommand;
13
use Doctrine\DBAL\Tools\Console\Command\RunSqlCommand;
14
use Doctrine\Migrations\Tools\Console\Command\DiffCommand;
15
use Doctrine\Migrations\Tools\Console\Command\DumpSchemaCommand;
16
use Doctrine\Migrations\Tools\Console\Command\ExecuteCommand;
17
use Doctrine\Migrations\Tools\Console\Command\GenerateCommand;
18
use Doctrine\Migrations\Tools\Console\Command\LatestCommand;
19
use Doctrine\Migrations\Tools\Console\Command\MigrateCommand;
20
use Doctrine\Migrations\Tools\Console\Command\RollupCommand;
21
use Doctrine\Migrations\Tools\Console\Command\StatusCommand;
22
use Doctrine\Migrations\Tools\Console\Command\UpToDateCommand;
23
use Doctrine\Migrations\Tools\Console\Command\VersionCommand;
24
use Doctrine\ORM\EntityManagerInterface;
25
use Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver;
26
use Doctrine\ORM\Tools\Console\Command\ClearCache\CollectionRegionCommand;
27
use Doctrine\ORM\Tools\Console\Command\ClearCache\EntityRegionCommand;
28
use Doctrine\ORM\Tools\Console\Command\ClearCache\MetadataCommand;
29
use Doctrine\ORM\Tools\Console\Command\ClearCache\QueryCommand;
30
use Doctrine\ORM\Tools\Console\Command\ClearCache\QueryRegionCommand;
31
use Doctrine\ORM\Tools\Console\Command\ClearCache\ResultCommand;
32
use Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand;
33
use Doctrine\ORM\Tools\Console\Command\EnsureProductionSettingsCommand;
34
use Doctrine\ORM\Tools\Console\Command\GenerateProxiesCommand;
35
use Doctrine\ORM\Tools\Console\Command\InfoCommand;
36
use Doctrine\ORM\Tools\Console\Command\MappingDescribeCommand;
37
use Doctrine\ORM\Tools\Console\Command\RunDqlCommand;
38
use Doctrine\ORM\Tools\Console\Command\SchemaTool\CreateCommand;
39
use Doctrine\ORM\Tools\Console\Command\SchemaTool\DropCommand;
40
use Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand;
41
use Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand;
42
43
class ConfigProvider
44
{
45
    public const CONNECTION_ALIAS_PATTERN = 'doctrine.entity_manager.%s';
46
    public const DEFAULT_CONNECTION = 'orm_default';
47
    public const CONTAINER_EXCEPTION_MESSAGE_PATTERN = 'The `%s` class must be configured in the DI container.';
48
49
    /**
50
     * @return array<mixed>
51
     */
52
    public function __invoke(): array
53
    {
54
        return [
55
            'factories' => [
56
                'doctrine.entity_manager.orm_default' => EntityManagerFactory::class,
57
                'doctrine.connection.orm_default' => [ConnectionFactory::class, 'orm_default'],
58
            ],
59
            'services' => [
60
                EntityManagerInterface::class => 'doctrine.entity_manager.orm_default',
61
                Connection::class => 'doctrine.connection.orm_default',
62
            ],
63
            'delegators' => [
64
                Console::class => [
65
                    AntidotCliDoctrineDelegatorFactory::class
66
                ],
67
            ],
68
            'console' => [
69
                'commands' => [
70
                    // DBAL Commands
71
                    'dbal:reserved-words' => ReservedWordsCommand::class,
72
                    'dbal:run-sql' => RunSqlCommand::class,
73
74
                    // ORM Commands
75
                    'orm:clear-cache:region:collection' => CollectionRegionCommand::class,
76
                    'orm:clear-cache:region:entity' => EntityRegionCommand::class,
77
                    'orm:clear-cache:metadata' => MetadataCommand::class,
78
                    'orm:clear-cache:query' => QueryCommand::class,
79
                    'orm:clear-cache:region:query' => QueryRegionCommand::class,
80
                    'orm:clear-cache:result' => ResultCommand::class,
81
                    'orm:schema-tool:create' => CreateCommand::class,
82
                    'orm:schema-tool:update' => UpdateCommand::class,
83
                    'orm:schema-tool:drop' => DropCommand::class,
84
                    'orm:ensure-production-settings' => EnsureProductionSettingsCommand::class,
85
                    'orm:generate-proxies' => GenerateProxiesCommand::class,
86
                    'orm:convert-mapping' => ConvertMappingCommand::class,
87
                    'orm:run-dql' => RunDqlCommand::class,
88
                    'orm:validate-schema' => ValidateSchemaCommand::class,
89
                    'orm:info' => InfoCommand::class,
90
                    'orm:mapping:describe' => MappingDescribeCommand::class,
91
                    'migrations:dump-schema' => DumpSchemaCommand::class,
92
                    'migrations:execute' => ExecuteCommand::class,
93
                    'migrations:generate' => GenerateCommand::class,
94
                    'migrations:latest' => LatestCommand::class,
95
                    'migrations:migrate' => MigrateCommand::class,
96
                    'migrations:rollup' => RollupCommand::class,
97
                    'migrations:status' => StatusCommand::class,
98
                    'migrations:version' => VersionCommand::class,
99
                    'migrations:up-to-date' => UpToDateCommand::class,
100
                    'migrations:diff' => DiffCommand::class,
101
                ],
102
                'services' => [
103
                    // DBAL Commands
104
                    ReservedWordsCommand::class => ReservedWordsCommand::class,
105
                    RunSqlCommand::class => RunSqlCommand::class,
106
107
                    // ORM Commands
108
                    CollectionRegionCommand::class => CollectionRegionCommand::class,
109
                    EntityRegionCommand::class => EntityRegionCommand::class,
110
                    MetadataCommand::class => MetadataCommand::class,
111
                    QueryCommand::class => QueryCommand::class,
112
                    QueryRegionCommand::class => QueryRegionCommand::class,
113
                    ResultCommand::class => ResultCommand::class,
114
                    CreateCommand::class => CreateCommand::class,
115
                    UpdateCommand::class => UpdateCommand::class,
116
                    DropCommand::class => DropCommand::class,
117
                    EnsureProductionSettingsCommand::class => EnsureProductionSettingsCommand::class,
118
                    GenerateProxiesCommand::class => GenerateProxiesCommand::class,
119
                    ConvertMappingCommand::class => ConvertMappingCommand::class,
120
                    RunDqlCommand::class => RunDqlCommand::class,
121
                    ValidateSchemaCommand::class => ValidateSchemaCommand::class,
122
                    InfoCommand::class => InfoCommand::class,
123
                    MappingDescribeCommand::class => MappingDescribeCommand::class,
124
                    DumpSchemaCommand::class => DumpSchemaCommand::class,
125
                    ExecuteCommand::class => ExecuteCommand::class,
126
                    GenerateCommand::class => GenerateCommand::class,
127
                    LatestCommand::class => LatestCommand::class,
128
                    MigrateCommand::class => MigrateCommand::class,
129
                    RollupCommand::class => RollupCommand::class,
130
                    StatusCommand::class => StatusCommand::class,
131
                    VersionCommand::class => VersionCommand::class,
132
                    UpToDateCommand::class => UpToDateCommand::class,
133
                    DiffCommand::class => DiffCommand::class,
134
                ],
135
            ],
136
            'doctrine' => [
137
                'connection' => [
138
                    self::DEFAULT_CONNECTION => [
139
                    ],
140
                ],
141
                'driver' => [
142
                    self::DEFAULT_CONNECTION => [
143
                        'class' => SimplifiedYamlDriver::class,
144
                        'cache' => 'array',
145
                        'paths' => [
146
                        ],
147
                    ],
148
                ],
149
            ],
150
        ];
151
    }
152
}
153