Entity::getSource()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cycle\Annotated\Annotation;
6
7
use Doctrine\Common\Annotations\Annotation\Target;
8
use Spiral\Attributes\NamedArgumentConstructor;
9
10
/**
11
 * @Annotation
12
 * @NamedArgumentConstructor
13
 * @Target("CLASS")
14
 */
15
#[\Attribute(\Attribute::TARGET_CLASS), NamedArgumentConstructor]
16
final class Entity
17
{
18
    /**
19
     * @param non-empty-string|null $role Entity role. Defaults to the lowercase class name without a namespace.
0 ignored issues
show
Documentation Bug introduced by
The doc comment non-empty-string|null at position 0 could not be parsed: Unknown type name 'non-empty-string' at position 0 in non-empty-string|null.
Loading history...
20
     * @param class-string|null $mapper Mapper class name. Defaults to {@see \Cycle\ORM\Mapper\Mapper}
21
     * @param class-string|null $repository Repository class to represent read operations for an entity.
22
     *        Defaults to {@see \Cycle\ORM\Select\Repository}
23
     * @param non-empty-string|null $table Entity source table. Defaults to plural form of entity role.
24
     * @param bool $readonlySchema Set to true to disable schema synchronization for the assigned table.
25
     * @param non-empty-string|null $database Database name. Defaults to null (default database).
26
     * @param class-string|null $source Entity source class (internal). Defaults to {@see \Cycle\ORM\Select\Source}
27
     * @param non-empty-string|non-empty-string[]|null $typecast
28
     * @param class-string|null $scope Class name of constraint to be applied to every entity query.
29
     * @param Column[] $columns Entity columns.
30
     * @param ForeignKey[] $foreignKeys Entity foreign keys.
31 1056
     */
32
    public function __construct(
33
        private ?string $role = null,
34
        private ?string $mapper = null,
35
        private ?string $repository = null,
36
        private ?string $table = null,
37
        private bool $readonlySchema = false,
38
        private ?string $database = null,
39
        private ?string $source = null,
40
        private array|string|null $typecast = null,
41
        private ?string $scope = null,
42
        private array $columns = [],
43
        /** @deprecated Use {@see $scope} instead */
44
        private ?string $constrain = null,
45 1056
        private array $foreignKeys = [],
46
    ) {
47 1056
    }
48
49 1056
    public function getRole(): ?string
50
    {
51
        return $this->role;
52 1056
    }
53
54 1056
    public function getMapper(): ?string
55
    {
56
        return $this->mapper;
57 1056
    }
58
59 1056
    public function getRepository(): ?string
60
    {
61
        return $this->repository;
62 1056
    }
63
64 1056
    public function getTable(): ?string
65
    {
66
        return $this->table;
67 1056
    }
68
69 1056
    public function isReadonlySchema(): bool
70
    {
71
        return $this->readonlySchema;
72 1056
    }
73
74 1056
    public function getDatabase(): ?string
75
    {
76
        return $this->database;
77 1056
    }
78
79 1056
    public function getSource(): ?string
80
    {
81
        return $this->source;
82 1056
    }
83
84 1056
    public function getScope(): ?string
85
    {
86
        return $this->scope ?? $this->constrain;
87 1032
    }
88
89 1032
    public function getColumns(): array
90
    {
91
        return $this->columns;
92 1056
    }
93
94 1056
    public function getForeignKeys(): array
95
    {
96
        return $this->foreignKeys;
97
    }
98 1056
99
    public function getTypecast(): array|string|null
100
    {
101
        if (is_array($this->typecast) && count($this->typecast) === 1) {
102
            return reset($this->typecast);
103
        }
104
105
        return $this->typecast;
106
    }
107
}
108