Passed
Push — master ( d845af...25b359 )
by Bruno
08:11
created

MigrationUniqueIndexDirective   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 10
c 1
b 0
f 0
dl 0
loc 29
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A processModelTypeDirective() 0 4 1
A processModelRelationshipDirective() 0 5 1
A processModelFieldDirective() 0 14 1
1
<?php declare(strict_types=1);
2
3
namespace Modelarium\Laravel\Directives;
4
5
use Illuminate\Support\Str;
6
use Modelarium\Laravel\Targets\ModelGenerator;
7
use Modelarium\Laravel\Targets\Interfaces\ModelDirectiveInterface;
8
9
class MigrationUniqueIndexDirective implements ModelDirectiveInterface
10
{
11
    public static function processModelTypeDirective(
12
        ModelGenerator $generator,
13
        \GraphQL\Language\AST\Node $directive
14
    ): void {
15
    }
16
17
    public static function processModelFieldDirective(
18
        ModelGenerator $generator,
19
        \GraphQL\Type\Definition\FieldDefinition $field,
20
        \GraphQL\Language\AST\Node $directive
21
    ): void {
22
        $fieldName = $field->name;
23
        $studlyName = $generator->getStudlyName();
24
        $generator->class->addMethod('from' . Str::studly($fieldName))
25
            ->setPublic()
26
            ->setStatic()
27
            ->setReturnType('\\App\\Models\\' . $studlyName)
28
            ->addComment("Factory from the $fieldName unique index")
29
            ->setBody("return {$studlyName}::firstWhere('$fieldName', \$value);")
30
            ->addParameter('value');
31
    }
32
33
    public function processModelRelationshipDirective(
34
        ModelGenerator $generator,
35
        \GraphQL\Type\Definition\FieldDefinition $field,
36
        \GraphQL\Language\AST\Node $directive
37
    ): void {
38
    }
39
}
40