Completed
Push — master ( b7ec1d...7c6dec )
by Matthias
12s
created

AggregateSchemaProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 38
ccs 15
cts 15
cp 1
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A createSchema() 0 17 3
1
<?php
2
3
namespace TalisOrm\Schema;
4
5
use Doctrine\DBAL\Connection;
6
use Doctrine\DBAL\Schema\Schema;
7
use InvalidArgumentException;
8
9
final class AggregateSchemaProvider
10
{
11
    /**
12
     * @var Connection
13
     */
14
    private $connection;
15
16
    /**
17
     * @var string[]
18
     */
19
    private $aggregateClasses;
20
21 24
    public function __construct(Connection $connection, array $aggregateClasses)
22
    {
23 24
        $this->connection = $connection;
24 24
        $this->aggregateClasses = $aggregateClasses;
25 24
    }
26
27
    /**
28
     * @return Schema
29
     */
30 24
    public function createSchema()
31
    {
32 24
        $schema = $this->connection->getSchemaManager()->createSchema();
33
34 24
        foreach ($this->aggregateClasses as $aggregateClass) {
35 24
            if (!is_a($aggregateClass, SpecifiesSchema::class, true)) {
36 1
                throw new InvalidArgumentException(sprintf(
37 1
                    'Class "%s" was expected to implement "%s"',
38 1
                    $aggregateClass,
39
                    SpecifiesSchema::class
40 1
                ));
41
            }
42
43 23
            $aggregateClass::specifySchema($schema);
44 23
        }
45
46 23
        return $schema;
47
    }
48
}
49