Test Failed
Push — master ( 38c078...235f8a )
by Mike
05:57
created

DatabaseFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 73
ccs 26
cts 26
cp 1
rs 10
c 0
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A createConfigGenerator() 0 6 1
A createPropelConnectionManager() 0 3 1
A getPropelServiceContainer() 0 3 1
A createConfigConverter() 0 3 1
A createPropelProvider() 0 6 1
A createBuildModel() 0 6 1
A createPropelCommandProvider() 0 6 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\Database;
6
7
8
use Propel\Runtime\Connection\ConnectionManagerInterface;
9
use Propel\Runtime\Connection\ConnectionManagerSingle;
10
use Propel\Runtime\Propel;
11
use Propel\Runtime\ServiceContainer\ServiceContainerInterface;
12
use Xervice\Database\Business\Model\BuildModel;
13
use Xervice\Database\Business\Model\BuildModelInterface;
14
use Xervice\Database\Config\Converter\ConverterInterface;
15
use Xervice\Database\Config\Converter\Json;
16
use Xervice\Database\Config\Generator;
17
use Xervice\Database\Config\GeneratorInterface;
18
use Xervice\Core\Factory\AbstractFactory;
19
use Xervice\Database\Provider\PropelCommandProvider;
20
use Xervice\Database\Provider\PropelCommandProviderInterface;
21
use Xervice\Database\Provider\PropelProvider;
22
use Xervice\Database\Provider\PropelProviderInterface;
23
24
/**
25
 * @method \Xervice\Database\DatabaseConfig getConfig()
26
 */
27
class DatabaseFactory extends AbstractFactory
28
{
29
    /**
30
     * @return \Xervice\Database\Business\Model\BuildModelInterface
31
     */
32 1
    public function createBuildModel(): BuildModelInterface
33
    {
34 1
        return new BuildModel(
35 1
            $this->createPropelCommandProvider(),
36 1
            $this->getConfig()->getSchemaPaths(),
37 1
            $this->getConfig()->getSchemaTarget()
38
        );
39
    }
40
41
42
    /**
43
     * @return \Xervice\Database\Provider\PropelProvider
44
     */
45 1
    public function createPropelProvider(): PropelProviderInterface
46
    {
47 1
        return new PropelProvider(
48 1
            $this->getConfig()->getPropelConfig(),
49 1
            $this->getPropelServiceContainer(),
50 1
            $this->createPropelConnectionManager()
51
        );
52
    }
53
54
    /**
55
     * @return \Propel\Runtime\Connection\ConnectionManagerSingle
56
     */
57 1
    public function createPropelConnectionManager(): ConnectionManagerInterface
58
    {
59 1
        return new ConnectionManagerSingle();
60
    }
61
62
    /**
63
     * @return \Xervice\Database\Config\GeneratorInterface
64
     */
65 1
    public function createConfigGenerator(): GeneratorInterface
66
    {
67 1
        return new Generator(
68 1
            $this->getConfig()->getPropelConfig(),
69 1
            $this->getConfig()->getConfDir(),
70 1
            $this->createConfigConverter()
71
        );
72
    }
73
74
    /**
75
     * @return \Xervice\Database\Provider\PropelCommandProvider
76
     */
77 2
    public function createPropelCommandProvider(): PropelCommandProviderInterface
78
    {
79 2
        return new PropelCommandProvider(
80 2
            $this->getConfig()->getPropelCommand(),
81 2
            $this->getConfig()->get('APPLICATION_PATH'),
82 2
            $this->getConfig()->getConfDir()
83
        );
84
    }
85
86
    /**
87
     * @return \Xervice\Database\Config\Converter\ConverterInterface
88
     */
89 1
    public function createConfigConverter(): ConverterInterface
90
    {
91 1
        return new Json();
92
    }
93
94
    /**
95
     * @return \Propel\Runtime\ServiceContainer\ServiceContainerInterface
96
     */
97 1
    public function getPropelServiceContainer(): ServiceContainerInterface
98
    {
99 1
        return Propel::getServiceContainer();
100
    }
101
}
102