Failed Conditions
Push — master ( 57b8db...ead074 )
by Jonathan
12s
created

MigrationTableManipulator::createMigrationTable()   B

Complexity

Conditions 4
Paths 4

Size

Total Lines 27
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 13
nc 4
nop 0
dl 0
loc 27
ccs 14
cts 14
cp 1
crap 4
rs 8.5806
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Migrations;
6
7
use Doctrine\DBAL\Schema\AbstractSchemaManager;
8
use Doctrine\Migrations\Configuration\Configuration;
9
10
/**
11
 * @internal
12
 */
13
class MigrationTableManipulator
14
{
15
    /** @var Configuration */
16
    private $configuration;
17
18
    /** @var AbstractSchemaManager */
19
    private $schemaManager;
20
21
    /** @var MigrationTable */
22
    private $migrationTable;
23
24
    /** @var MigrationTableStatus */
25
    private $migrationTableStatus;
26
27
    /** @var MigrationTableUpdater */
28
    private $migrationTableUpdater;
29
30 69
    public function __construct(
31
        Configuration $configuration,
32
        AbstractSchemaManager $schemaManager,
33
        MigrationTable $migrationTable,
34
        MigrationTableStatus $migrationTableStatus,
35
        MigrationTableUpdater $migrationTableUpdater
36
    ) {
37 69
        $this->configuration         = $configuration;
38 69
        $this->schemaManager         = $schemaManager;
39 69
        $this->migrationTable        = $migrationTable;
40 69
        $this->migrationTableStatus  = $migrationTableStatus;
41 69
        $this->migrationTableUpdater = $migrationTableUpdater;
42 69
    }
43
44 69
    public function createMigrationTable() : bool
45
    {
46 69
        $this->configuration->validate();
47
48 69
        if ($this->configuration->isDryRun()) {
49 1
            return false;
50
        }
51
52 69
        if ($this->migrationTableStatus->isCreated()) {
53 55
            if (! $this->migrationTableStatus->isUpToDate()) {
54 2
                $this->migrationTableUpdater->updateMigrationTable();
55
56 2
                $this->migrationTableStatus->setUpToDate(true);
57
58 2
                return true;
59
            }
60
61 53
            return false;
62
        }
63
64 66
        $table = $this->migrationTable->getNewDBALTable();
65
66 66
        $this->schemaManager->createTable($table);
67
68 66
        $this->migrationTableStatus->setCreated(true);
69
70 66
        return true;
71
    }
72
}
73