Passed
Push — master ( 5f4ef3...26bc8a )
by Tomasz
02:31
created

BinaryUuidSupport::createWalkerBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace ReadModel\Bridge\Doctrine\Query;
5
6
use Doctrine\DBAL\Query\QueryBuilder;
7
use Ramsey\Uuid\Exception\InvalidUuidStringException;
8
use Ramsey\Uuid\Uuid;
9
use ReadModel\Walker\WalkerBuilder;
10
11
trait BinaryUuidSupport
12
{
13
    protected function transformParameters(QueryBuilder $qb, string ...$parameters): void
14
    {
15
        $this->transformUuidsToBytes($qb, $parameters);
16
    }
17
18
    protected function createWalkerBuilder(array $uuids): WalkerBuilder
19
    {
20
        return parent::createWalkerBuilder($uuids)->withBinaryUuidCasting($uuids);
21
    }
22
23
    private function transformUuidsToBytes(QueryBuilder $qb, array $parameters): void
24
    {
25
        $parameters = array_merge(['id'], $parameters);
26
27
        foreach ($qb->getParameters() as $key => $value) {
28
            if (empty($value) && !in_array($key, $parameters)) {
29
                continue;
30
            }
31
32
            try {
33
                $value = Uuid::fromString($value)->getBytes();
34
                $qb->setParameter($key, $value);
35
            } catch (InvalidUuidStringException $e) {
36
                // just skip it
37
            }
38
        }
39
    }
40
}
41