CourseSearchMapping   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 44
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0
wmc 3
lcom 0
cbo 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getClass() 0 4 1
A getConstraints() 0 4 1
A getPropertyMappings() 0 22 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chubbyphp\ApiSkeleton\Validation;
6
7
use Chubbyphp\ApiSkeleton\Search\CourseSearch;
8
use Chubbyphp\Validation\Constraint\ChoiceConstraint;
9
use Chubbyphp\Validation\Constraint\ConstraintInterface;
10
use Chubbyphp\Validation\Constraint\NotNullConstraint;
11
use Chubbyphp\Validation\Constraint\NumericConstraint;
12
use Chubbyphp\Validation\Constraint\NumericRangeConstraint;
13
use Chubbyphp\Validation\Mapping\PropertyMapping;
14
use Chubbyphp\Validation\Mapping\PropertyMappingInterface;
15
use Chubbyphp\Validation\Mapping\ObjectMappingInterface;
16
17
final class CourseSearchMapping implements ObjectMappingInterface
18
{
19
    /**
20
     * @return string
21
     */
22 1
    public function getClass(): string
23
    {
24 1
        return CourseSearch::class;
25
    }
26
27
    /**
28
     * @return ConstraintInterface[]
29
     */
30 1
    public function getConstraints(): array
31
    {
32 1
        return [];
33
    }
34
35
    /**
36
     * @return PropertyMappingInterface[]
37
     */
38 1
    public function getPropertyMappings(): array
39
    {
40
        return [
41 1
            new PropertyMapping('page', [
42 1
                new NotNullConstraint(),
43 1
                new NumericConstraint(),
44 1
                new NumericRangeConstraint(1),
45
            ]),
46 1
            new PropertyMapping('perPage', [
47 1
                new NotNullConstraint(),
48 1
                new NumericConstraint(),
49 1
                new NumericRangeConstraint(1),
50
            ]),
51 1
            new PropertyMapping('sort', [
52 1
                new ChoiceConstraint(ChoiceConstraint::TYPE_STRING, CourseSearch::SORT),
53
            ]),
54 1
            new PropertyMapping('order', [
55 1
                new NotNullConstraint(),
56 1
                new ChoiceConstraint(ChoiceConstraint::TYPE_STRING, CourseSearch::ORDER),
57
            ]),
58
        ];
59
    }
60
}
61