Skip to content

Commit fac26cd

Browse files
committed
feat: add support for POINT and POINT[] data types
1 parent e31b69e commit fac26cd

File tree

12 files changed

+44
-28
lines changed

12 files changed

+44
-28
lines changed

docs/INTEGRATING-WITH-DOCTRINE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Type::addType('inet', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\Inet");
3030
Type::addType('inet[]', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\InetArray");
3131
Type::addType('macaddr', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\Macaddr");
3232
Type::addType('macaddr[]', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\MacaddrArray");
33+
34+
Type::addType('point[]', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\PointArray");
3335
```
3436

3537

@@ -208,6 +210,8 @@ $platform->registerDoctrineTypeMapping('macaddr[]','macaddr[]');
208210
$platform->registerDoctrineTypeMapping('_macaddr','macaddr[]');
209211

210212
$platform->registerDoctrineTypeMapping('point','point');
213+
$platform->registerDoctrineTypeMapping('point[]','point[]');
214+
$platform->registerDoctrineTypeMapping('_point','point[]');
211215
...
212216

213217
```

docs/INTEGRATING-WITH-LARAVEL.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ return [
8484
'macaddr[]' => MartinGeorgiev\Doctrine\DBAL\Types\MacaddrArray::class,
8585

8686
'point' => MartinGeorgiev\Doctrine\DBAL\Types\Point::class,
87+
'point[]' => MartinGeorgiev\Doctrine\DBAL\Types\PointArray::class,
8788
],
8889
];
8990
```
@@ -308,6 +309,9 @@ class DoctrineEventSubscriber implements Subscriber
308309
if (!Type::hasType('point')) {
309310
Type::addType('point', \MartinGeorgiev\Doctrine\DBAL\Types\Point::class);
310311
}
312+
if (!Type::hasType('point[]')) {
313+
Type::addType('point[]', \MartinGeorgiev\Doctrine\DBAL\Types\PointArray::class);
314+
}
311315
}
312316
}
313317
```

docs/INTEGRATING-WITH-SYMFONY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ doctrine:
2929
macaddr: MartinGeorgiev\Doctrine\DBAL\Types\Macaddr
3030
macaddr[]: MartinGeorgiev\Doctrine\DBAL\Types\MacaddrArray
3131
point: MartinGeorgiev\Doctrine\DBAL\Types\Point
32+
point[]: MartinGeorgiev\Doctrine\DBAL\Types\PointArray
3233
```
3334
3435
@@ -76,6 +77,8 @@ doctrine:
7677
_macaddr: macaddr[]
7778
7879
point: point
80+
point[]: point[]
81+
_point: point[]
7982
```
8083

8184

src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidPointArrayItemForDatabaseException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/**
1010
* @since 3.1
1111
*
12-
* @author Martin Georgiev <martin.georgiev@gmail.com>
12+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1313
*/
1414
class InvalidPointArrayItemForDatabaseException extends ConversionException
1515
{

src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidPointArrayItemForPHPException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/**
1010
* @since 3.1
1111
*
12-
* @author Martin Georgiev <martin.georgiev@gmail.com>
12+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1313
*/
1414
class InvalidPointArrayItemForPHPException extends ConversionException
1515
{

src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidPointForDatabaseException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/**
1010
* @since 3.1
1111
*
12-
* @author Martin Georgiev <martin.georgiev@gmail.com>
12+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1313
*/
1414
class InvalidPointForDatabaseException extends ConversionException
1515
{

src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidPointForPHPException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/**
1010
* @since 3.1
1111
*
12-
* @author Martin Georgiev <martin.georgiev@gmail.com>
12+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1313
*/
1414
class InvalidPointForPHPException extends ConversionException
1515
{

src/MartinGeorgiev/Doctrine/DBAL/Types/Point.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
use Doctrine\DBAL\Platforms\AbstractPlatform;
88
use MartinGeorgiev\Doctrine\DBAL\Types\Exceptions\InvalidPointForDatabaseException;
99
use MartinGeorgiev\Doctrine\DBAL\Types\Exceptions\InvalidPointForPHPException;
10-
use MartinGeorgiev\ValueObject\Point as PointValueObject;
10+
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Point as PointValueObject;
1111

1212
/**
1313
* Implementation of PostgreSQL POINT data type.
1414
*
15-
* @see https://www.postgresql.org/docs/current/datatype-geometric.html#DATATYPE-GEOMETRIC-POINTS
15+
* @see https://www.postgresql.org/docs/17/datatype-geometric.html#DATATYPE-GEOMETRIC-POINTS
1616
* @since 3.1
1717
*
18-
* @author Martin Georgiev <martin.georgiev@gmail.com>
18+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1919
*/
2020
class Point extends BaseType
2121
{
@@ -44,7 +44,7 @@ public function convertToPHPValue($value, AbstractPlatform $platform): ?PointVal
4444
throw InvalidPointForDatabaseException::forInvalidType($value);
4545
}
4646

47-
if (!\preg_match('/\((-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)\)/', $value, $matches)) {
47+
if (!\preg_match('/\((-?\d+(?:\.\d{1,6})?),\s*(-?\d+(?:\.\d{1,6})?)\)/', $value, $matches)) {
4848
throw InvalidPointForDatabaseException::forInvalidFormat($value);
4949
}
5050

src/MartinGeorgiev/Doctrine/DBAL/Types/PointArray.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66

77
use MartinGeorgiev\Doctrine\DBAL\Types\Exceptions\InvalidPointArrayItemForDatabaseException;
88
use MartinGeorgiev\Doctrine\DBAL\Types\Exceptions\InvalidPointArrayItemForPHPException;
9-
use MartinGeorgiev\ValueObject\Point as PointValueObject;
9+
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Point as PointValueObject;
1010

1111
/**
1212
* Implementation of PostgreSQL POINT[] data type.
1313
*
14-
* @see https://www.postgresql.org/docs/current/datatype-geometric.html#DATATYPE-GEOMETRIC-POINTS
14+
* @see https://www.postgresql.org/docs/17/datatype-geometric.html#DATATYPE-GEOMETRIC-POINTS
1515
* @since 3.1
1616
*
17-
* @author Martin Georgiev <martin.georgiev@gmail.com>
17+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1818
*/
1919
class PointArray extends BaseArray
2020
{
@@ -53,7 +53,7 @@ public function transformArrayItemForPHP(mixed $item): ?PointValueObject
5353
$this->throwInvalidTypeException($item);
5454
}
5555

56-
if (!\preg_match('/^\((-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)\)$/', $item, $matches)) {
56+
if (!\preg_match('/^\((-?\d+(?:\.\d{1,6})?),\s*(-?\d+(?:\.\d{1,6})?)\)$/', $item, $matches)) {
5757
$this->throwInvalidFormatException($item);
5858
}
5959

src/MartinGeorgiev/ValueObject/Point.php renamed to src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Point.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
declare(strict_types=1);
44

5-
namespace MartinGeorgiev\ValueObject;
5+
namespace MartinGeorgiev\Doctrine\DBAL\Types\ValueObject;
66

77
/**
88
* @since 3.1
99
*
10-
* @author Martin Georgiev <martin.georgiev@gmail.com>
10+
* @author Sébastien Jean <sebastien.jean76@gmail.com>
1111
*/
1212
final class Point implements \Stringable
1313
{

0 commit comments

Comments
 (0)