Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
LinkEndpointTrait
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 1
 getEntityData
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 updateEntityWithData
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 getEntityById
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace Olz\Service\Endpoints;
4
5use Olz\Entity\Service\Link;
6use Olz\Utils\WithUtilsTrait;
7use PhpTypeScriptApi\HttpError;
8
9/**
10 * @phpstan-type OlzLinkId int
11 * @phpstan-type OlzLinkData array{
12 *   position?: ?int,
13 *   name: non-empty-string,
14 *   url: non-empty-string,
15 * }
16 */
17trait LinkEndpointTrait {
18    use WithUtilsTrait;
19
20    /** @return OlzLinkData */
21    public function getEntityData(Link $entity): array {
22        return [
23            'name' => $entity->getName() ?: '-',
24            'position' => $entity->getPosition(),
25            'url' => $entity->getUrl() ?: '-',
26        ];
27    }
28
29    /** @param OlzLinkData $input_data */
30    public function updateEntityWithData(Link $entity, array $input_data): void {
31        $entity->setName($input_data['name']);
32        $entity->setPosition($input_data['position'] ?? 0);
33        $entity->setUrl($input_data['url']);
34    }
35
36    protected function getEntityById(int $id): Link {
37        $repo = $this->entityManager()->getRepository(Link::class);
38        $entity = $repo->findOneBy(['id' => $id]);
39        if (!$entity) {
40            throw new HttpError(404, "Nicht gefunden.");
41        }
42        return $entity;
43    }
44}