Passed
Pull Request — 2.x (#19)
by Alexander
12:03
created

NameBasedOnChangesGenerator::changeToString()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 17
nc 1
nop 2
dl 0
loc 20
rs 9.7
c 0
b 0
f 0
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
use Cycle\Schema\Generator\Migrations\Changes\CollectorInterface;
0 ignored issues
show
Bug introduced by
The type Cycle\Schema\Generator\M...nges\CollectorInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
12
final class NameBasedOnChangesGenerator implements NameGeneratorInterface
13
{
14
    public function generate(Atomizer $atomizer): string
15
    {
16
        $collector = new Collector();
17
        return \implode(
18
            '_',
19
            \array_map(
20
                fn(array $pair) => $this->changeToString($pair[0], $pair[1]),
21
                $collector->collect($atomizer),
22
            )
23
        );
24
    }
25
26
    private function changeToString(ChangeType $change, string $name): string
27
    {
28
        return sprintf(
29
            '%s_%s',
30
            match ($change) {
31
                ChangeType::Create => 'create',
32
                ChangeType::Drop => 'drop',
33
                ChangeType::Rename => 'rename',
34
                ChangeType::Change => 'change',
35
                ChangeType::Add => 'add',
36
                ChangeType::Remove => 'rm',
37
                ChangeType::Alter => 'alter',
38
                ChangeType::AddIndex => 'add_index',
39
                ChangeType::RemoveIndex => 'rm_index',
40
                ChangeType::AlterIndex => 'alter_index',
41
                ChangeType::AddFk => 'add_fk',
42
                ChangeType::RemoveFk => 'rm_fk',
43
                ChangeType::AlterFk => 'alter_fk',
44
            },
45
            $name,
46
        );
47
    }
48
}
49