Completed
Push — master ( 569398...78d4be )
by Tom
25s queued 10s
created

MigrationsConfigurationFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 81.48%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 5
dl 0
loc 60
ccs 22
cts 27
cp 0.8148
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getOptionsClass() 0 3 1
A __invoke() 0 38 5
A createService() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DoctrineORMModule\Service;
6
7
use Doctrine\Migrations\Configuration\Configuration;
8
use Doctrine\Migrations\OutputWriter;
9
use DoctrineModule\Service\AbstractFactory;
10
use Interop\Container\ContainerInterface;
11
use Laminas\ServiceManager\ServiceLocatorInterface;
12
use Symfony\Component\Console\Output\ConsoleOutput;
13
use function method_exists;
14
15
/**
16
 * DBAL Connection ServiceManager factory
17
 */
18
class MigrationsConfigurationFactory extends AbstractFactory
19
{
20
    /**
21
     * {@inheritDoc}
22
     *
23
     * @return Configuration
24
     */
25 18
    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null)
26
    {
27 18
        $name             = $this->getName();
28 18
        $connection       = $container->get('doctrine.connection.' . $name);
29 18
        $appConfig        = $container->get('config');
30 18
        $migrationsConfig = $appConfig['doctrine']['migrations_configuration'][$name];
31
32 18
        $configuration = new Configuration($connection);
33
34 18
        $output         = new ConsoleOutput();
35
        $writerCallback = static function ($message) use ($output) : void {
36
            $output->writeln($message);
37 18
        };
38
39 18
        $outputWriter = $configuration->getOutputWriter();
40 18
        if (method_exists($outputWriter, 'setCallback')) {
41 18
            $outputWriter->setCallback($writerCallback);
42
        } else {
43
            // Fallback for doctrine-migrations v1.x
44
            $configuration->setOutputWriter(new OutputWriter($writerCallback));
45
        }
46
47 18
        $configuration->setName($migrationsConfig['name']);
48 18
        $configuration->setMigrationsDirectory($migrationsConfig['directory']);
49 18
        $configuration->setMigrationsNamespace($migrationsConfig['namespace']);
50 18
        $configuration->setMigrationsTableName($migrationsConfig['table']);
51 18
        $configuration->registerMigrationsFromDirectory($migrationsConfig['directory']);
52
53 18
        if (method_exists($configuration, 'setMigrationsColumnName')) {
54 18
            $configuration->setMigrationsColumnName($migrationsConfig['column']);
55
        }
56
57 18
        if (isset($migrationsConfig['custom_template']) && method_exists($configuration, 'setCustomTemplate')) {
58
            $configuration->setCustomTemplate($migrationsConfig['custom_template']);
59
        }
60
61 18
        return $configuration;
62
    }
63
64
    /**
65
     * {@inheritDoc}
66
     *
67
     * @return Configuration
68
     */
69 18
    public function createService(ServiceLocatorInterface $container)
70
    {
71 18
        return $this($container, Configuration::class);
72
    }
73
74
    public function getOptionsClass() : string
75
    {
76
    }
77
}
78