Completed
Push — extensions-support ( 0f14db...20cfb1 )
by Guido
03:45
created

Constraints   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 1
cbo 0
dl 0
loc 60
ccs 19
cts 19
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A index() 0 7 2
A primary() 0 7 2
A unique() 0 7 2
A constraint() 0 8 1
getBuilder() 0 1 ?
queue() 0 1 ?
1
<?php
2
3
namespace LaravelDoctrine\Fluent\Builders\Traits;
4
5
use LaravelDoctrine\Fluent\Buildable;
6
use LaravelDoctrine\Fluent\Builders\Index;
7
use LaravelDoctrine\Fluent\Builders\Primary;
8
use LaravelDoctrine\Fluent\Builders\UniqueConstraint;
9
10
trait Constraints
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15 3
    public function index($columns)
16
    {
17 3
        return $this->constraint(
18 3
            Index::class,
19 3
            is_array($columns) ? $columns : func_get_args()
20 3
        );
21
    }
22
23
    /**
24
     * {@inheritdoc}
25
     */
26 3
    public function primary($fields)
27
    {
28 3
        return $this->constraint(
29 3
            Primary::class,
30 3
            is_array($fields) ? $fields : func_get_args()
31 3
        );
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37 3
    public function unique($columns)
38
    {
39 3
        return $this->constraint(
40 3
            UniqueConstraint::class,
41 3
            is_array($columns) ? $columns : func_get_args()
42 3
        );
43
    }
44
45
    /**
46
     * @param string $class
47
     * @param array  $columns
48
     *
49
     * @return mixed
50
     */
51 9
    protected function constraint($class, array $columns)
52
    {
53 9
        $constraint = new $class($this->getBuilder(), $columns);
54
55 9
        $this->queue($constraint);
56
57 9
        return $constraint;
58
    }
59
60
    /**
61
     * @return \Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder
62
     */
63
    abstract public function getBuilder();
64
65
    /**
66
     * @param Buildable $buildable
67
     */
68
    abstract protected function queue(Buildable $buildable);
69
}
70