Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
PersistenceLayerFactory
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 create
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\DoctrineEntityConverter\Factories;
3
4use Apie\Core\BoundedContext\BoundedContextHashmap;
5use Apie\DoctrineEntityConverter\CodeGenerators\AddDoctrineFields;
6use Apie\DoctrineEntityConverter\CodeGenerators\AddSecondLevelCache;
7use Apie\DoctrineEntityConverter\CodeGenerators\LimitFieldLength;
8use Apie\StorageMetadataBuilder\ChainedBootGeneratedCode;
9use Apie\StorageMetadataBuilder\ChainedGeneratedCodeContext;
10use Apie\StorageMetadataBuilder\ChainedPostGeneratedCodeContext;
11use Apie\StorageMetadataBuilder\CodeGenerators\AccessControlListGenerator;
12use Apie\StorageMetadataBuilder\CodeGenerators\AddAutoIdGenerator;
13use Apie\StorageMetadataBuilder\CodeGenerators\AddIndexesCodeGenerator;
14use Apie\StorageMetadataBuilder\CodeGenerators\DecimalCodeGenerator;
15use Apie\StorageMetadataBuilder\CodeGenerators\FileTableGenerator;
16use Apie\StorageMetadataBuilder\CodeGenerators\ItemListCodeGenerator;
17use Apie\StorageMetadataBuilder\CodeGenerators\RootObjectCodeGenerator;
18use Apie\StorageMetadataBuilder\CodeGenerators\SimplePropertiesCodeGenerator;
19use Apie\StorageMetadataBuilder\CodeGenerators\SubObjectCodeGenerator;
20use Apie\StorageMetadataBuilder\Mediators\GeneratedCode;
21use Apie\StorageMetadataBuilder\StorageMetadataBuilder;
22
23final class PersistenceLayerFactory
24{
25    public function create(BoundedContextHashmap $boundedContextHashmap, bool $singleIndexTable = true): GeneratedCode
26    {
27        $simple = new SimplePropertiesCodeGenerator();
28        $indexer = new AddIndexesCodeGenerator($singleIndexTable);
29        $acl = new AccessControlListGenerator();
30        $testItem = new StorageMetadataBuilder(
31            $boundedContextHashmap,
32            new ChainedBootGeneratedCode(
33                $simple,
34                $indexer,
35                $acl,
36            ),
37            new ChainedGeneratedCodeContext(
38                new AddAutoIdGenerator(),
39                new FileTableGenerator(),
40                new SubObjectCodeGenerator(),
41                new ItemListCodeGenerator(),
42                new DecimalCodeGenerator(),
43                $simple,
44                new RootObjectCodeGenerator()
45            ),
46            new ChainedPostGeneratedCodeContext(
47                $indexer,
48                $acl,
49                new AddDoctrineFields(),
50                new LimitFieldLength(),
51                new AddSecondLevelCache(),
52            )
53        );
54        return $testItem->generateCode();
55    }
56}