• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

brick / geo / 14085541468

26 Mar 2025 02:15PM UTC coverage: 63.783% (+0.4%) from 63.411%
14085541468

push

github

BenMorel
Move docker compose to postgis image

1939 of 3040 relevant lines covered (63.78%)

1906.06 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.75
/src/Engine/Database/Driver/PdoMysqlDriver.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Brick\Geo\Engine\Database\Driver;
6

7
use Brick\Geo\Engine\Database\Driver\Internal\AbstractPdoDriver;
8
use Brick\Geo\Engine\Database\Query\BinaryValue;
9
use Brick\Geo\Engine\Database\Query\ScalarValue;
10
use Brick\Geo\Exception\GeometryEngineException;
11
use Override;
12
use PDO;
13

14
/**
15
 * Database driver using a pdo_mysql connection.
16
 */
17
final class PdoMysqlDriver extends AbstractPdoDriver
18
{
19
    #[Override]
20
    public function convertQuery(string|BinaryValue|ScalarValue ...$query) : array
21
    {
22
        $queryString = '';
1,248✔
23
        $queryParams = [];
1,248✔
24

25
        foreach ($query as $queryPart) {
1,248✔
26
            if ($queryPart instanceof BinaryValue) {
1,248✔
27
                $queryString .= 'BINARY ?';
1,184✔
28
                $queryParams[] = [$queryPart->value, PDO::PARAM_LOB];
1,184✔
29
            } elseif ($queryPart instanceof ScalarValue) {
1,248✔
30
                $queryString .= '?';
1,184✔
31

32
                if (is_int($queryPart->value)) {
1,184✔
33
                    $queryParams[] = [$queryPart->value, PDO::PARAM_INT];
1,184✔
34
                } elseif (is_bool($queryPart->value)) {
292✔
35
                    $queryParams[] = [$queryPart->value, PDO::PARAM_BOOL];
20✔
36
                } else {
37
                    $queryParams[] = [$queryPart->value, PDO::PARAM_STR];
292✔
38
                }
39
            } else {
40
                $queryString .= $queryPart;
1,248✔
41
            }
42
        }
43

44
        return [$queryString, $queryParams];
1,248✔
45
    }
46

47
    #[Override]
48
    public function convertBinaryResult(mixed $value) : string
49
    {
50
        if (is_string($value)) {
240✔
51
            return $value;
234✔
52
        }
53

54
        throw GeometryEngineException::unexpectedDatabaseReturnType('string', $value);
6✔
55
    }
56

57
    #[Override]
58
    public function convertStringResult(mixed $value) : string
59
    {
60
        if (is_string($value)) {
152✔
61
            return $value;
152✔
62
        }
63

64
        throw GeometryEngineException::unexpectedDatabaseReturnType('string', $value);
×
65
    }
66

67
    #[Override]
68
    public function convertIntResult(mixed $value) : int
69
    {
70
        if (is_int($value)) {
258✔
71
            return $value;
258✔
72
        }
73

74
        throw GeometryEngineException::unexpectedDatabaseReturnType('int', $value);
×
75
    }
76

77
    #[Override]
78
    public function convertFloatResult(mixed $value) : float
79
    {
80
        if (is_numeric($value)) {
130✔
81
            return (float) $value;
112✔
82
        }
83

84
        throw GeometryEngineException::unexpectedDatabaseReturnType('number or numeric string', $value);
18✔
85
    }
86

87
    #[Override]
88
    public function convertBoolResult(mixed $value) : bool
89
    {
90
        return match ($value) {
506✔
91
            0 => false,
178✔
92
            1 => true,
240✔
93
            default => throw GeometryEngineException::unexpectedDatabaseReturnType('0 or 1', $value),
506✔
94
        };
506✔
95
    }
96
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc