Passed
Push — 2.x ( f09c73...766c68 )
by Aleksei
39:35 queued 23:36
created

NameBasedOnChangesGenerator   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 24
c 1
b 0
f 0
dl 0
loc 34
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A changeToString() 0 20 1
A generate() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cycle\Schema\Generator\Migrations;
6
7
use Cycle\Migrations\Atomizer\Atomizer;
8
use Cycle\Schema\Generator\Migrations\Changes\ChangeType;
9
use Cycle\Schema\Generator\Migrations\Changes\Collector;
10
11
final class NameBasedOnChangesGenerator implements NameGeneratorInterface
12
{
13
    public function generate(Atomizer $atomizer): string
14
    {
15
        $collector = new Collector();
16
        return \implode(
17
            '_',
18
            \array_map(
19
                fn(array $pair): string => $this->changeToString($pair[0], $pair[1]),
20
                $collector->collect($atomizer),
21
            ),
22
        );
23
    }
24
25
    private function changeToString(ChangeType $change, string $name): string
26
    {
27
        return sprintf(
28
            '%s_%s',
29
            match ($change) {
30
                ChangeType::CreateTable => 'create',
31
                ChangeType::DropTable => 'drop',
32
                ChangeType::RenameTable => 'rename',
33
                ChangeType::ChangeTable => 'change',
34
                ChangeType::AddColumn => 'add',
35
                ChangeType::DropColumn => 'rm',
36
                ChangeType::AlterColumn => 'alter',
37
                ChangeType::AddIndex => 'add_index',
38
                ChangeType::DropIndex => 'rm_index',
39
                ChangeType::AlterIndex => 'alter_index',
40
                ChangeType::AddFk => 'add_fk',
41
                ChangeType::DropFk => 'rm_fk',
42
                ChangeType::AlterFk => 'alter_fk',
43
            },
44
            $name,
45
        );
46
    }
47
}
48