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

Constraints::queue()

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 1
nc 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