Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
69.23% covered (warning)
69.23%
9 / 13
50.00% covered (danger)
50.00%
4 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 1
StoredFileMetadata
69.23% covered (warning)
69.23%
9 / 13
50.00% covered (danger)
50.00%
4 / 8
12.91
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getValueOptions
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDisplayName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 toClass
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getHashmap
83.33% covered (warning)
83.33%
5 / 6
0.00% covered (danger)
0.00%
0 / 1
3.04
 getRequiredFields
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 toScalarType
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getArrayItemType
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2namespace Apie\Core\Metadata;
3
4use Apie\Core\Context\ApieContext;
5use Apie\Core\Context\MetadataFieldHashmap;
6use Apie\Core\Enums\ScalarType;
7use Apie\Core\FileStorage\StoredFile;
8use Apie\Core\Lists\StringList;
9use Apie\Core\Lists\ValueOptionList;
10use Apie\Core\Metadata\Fields\ConstructorParameter;
11use Apie\Core\Metadata\Fields\GetterMethod;
12use ReflectionClass;
13use ReflectionMethod;
14use ReflectionParameter;
15
16final class StoredFileMetadata implements MetadataInterface
17{
18    /**
19     * @param ReflectionClass<StoredFile> $class
20     */
21    public function __construct(
22        private readonly ReflectionClass $class,
23        private readonly bool $getters,
24        private readonly bool $setters
25    ) {
26    }
27
28    public function getValueOptions(ApieContext $context, bool $runtimeFilter = false): ?ValueOptionList
29    {
30        return null;
31    }
32
33    public function getDisplayName(): string
34    {
35        return $this->class->getShortName();
36    }
37
38    /**
39     * @return ReflectionClass<StoredFile>
40     */
41    public function toClass(): ReflectionClass
42    {
43        return $this->class;
44    }
45
46    public function getHashmap(): MetadataFieldHashmap
47    {
48        $mapping = [];
49        if ($this->getters) {
50            $mapping['indexing'] = new GetterMethod(new ReflectionMethod(StoredFile::class, 'getIndexing'));
51        }
52        if ($this->setters) {
53            $mapping['contents']  = new ConstructorParameter((new ReflectionParameter([StoredFile::class, '__construct'], 'content')));
54        }
55        return new MetadataFieldHashmap($mapping);
56    }
57
58    public function getRequiredFields(): StringList
59    {
60        return new StringList([]);
61    }
62
63    public function toScalarType(): ScalarType
64    {
65        return ScalarType::STDCLASS;
66    }
67
68    public function getArrayItemType(): ?MetadataInterface
69    {
70        return null;
71    }
72}