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

AggregateSchemaProvider::createSchema()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 0
dl 0
loc 17
ccs 11
cts 11
cp 1
crap 3
rs 9.9666
c 0
b 0
f 0
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