Completed
Branch feature/pre-split (67216b)
by Anton
03:22
created

CreateTable::execute()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
c 0
b 0
f 0
cc 3
eloc 10
nc 3
nop 1
rs 9.4285
1
<?php
2
/**
3
 * Spiral Framework.
4
 *
5
 * @license   MIT
6
 * @author    Anton Titov (Wolfy-J)
7
 */
8
namespace Spiral\Migrations\Operations\Table;
9
10
use Spiral\Database\Entities\AbstractHandler;
11
use Spiral\Migrations\CapsuleInterface;
12
use Spiral\Migrations\Exceptions\Operations\TableException;
13
use Spiral\Migrations\Operations\TableOperation;
14
15
class CreateTable extends TableOperation
16
{
17
    /**
18
     * {@inheritdoc}
19
     */
20
    public function execute(CapsuleInterface $capsule)
21
    {
22
        $schema = $capsule->getSchema($this->getTable(), $this->getDatabase());
23
        $database = $this->database ?? '[default]';
24
25
        if ($schema->exists()) {
26
            throw new TableException(
27
                "Unable to create table '{$database}'.'{$this->getTable()}', table already exists"
28
            );
29
        }
30
31
        if (empty($schema->getColumns())) {
32
            throw new TableException(
33
                "Unable to create table '{$database}'.'{$this->getTable()}', no columns were added"
34
            );
35
        }
36
37
        $schema->save(AbstractHandler::DO_ALL);
38
    }
39
}