Completed
Push — 1.1 ( d166b0...e7f438 )
by Patrick
11:31 queued 07:46
created

Constraints   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

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
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
    public function index($columns)
16
    {
17
        return $this->constraint(
18
            Index::class,
19
            is_array($columns) ? $columns : func_get_args()
20
        );
21
    }
22
23
    /**
24
     * {@inheritdoc}
25
     */
26
    public function primary($fields)
27
    {
28
        return $this->constraint(
29
            Primary::class,
30
            is_array($fields) ? $fields : func_get_args()
31
        );
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function unique($columns)
38
    {
39
        return $this->constraint(
40
            UniqueConstraint::class,
41
            is_array($columns) ? $columns : func_get_args()
42
        );
43
    }
44
45
    /**
46
     * @param string $class
47
     * @param array  $columns
48
     *
49
     * @return mixed
50
     */
51
    protected function constraint($class, array $columns)
52
    {
53
        $constraint = new $class($this->getBuilder(), $columns);
54
55
        $this->queue($constraint);
56
57
        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