Skip to content

Commit f192239

Browse files
author
Christian Kolb
committed
Update to auto registration of doctrine types
1 parent 2dca35b commit f192239

File tree

16 files changed

+248
-149
lines changed

16 files changed

+248
-149
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "symfony-bundle",
66
"require": {
77
"php": "8.4.*|8.5.*",
8-
"digital-craftsman/self-aware-normalizers": "^1.2.0",
8+
"digital-craftsman/self-aware-normalizers": "dev-interface-registration as 1.3.0",
99
"doctrine/dbal": "^4.4",
1010
"symfony/framework-bundle": "^7.4|^8.0",
1111
"symfony/serializer": "^7.4|^8.0"

composer.lock

Lines changed: 115 additions & 105 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Date.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
namespace DigitalCraftsman\DateTimePrecision;
66

7+
use DigitalCraftsman\SelfAwareNormalizers\Doctrine\NormalizableTypeWithSQLDeclaration;
78
use DigitalCraftsman\SelfAwareNormalizers\Serializer\StringNormalizable;
9+
use Doctrine\DBAL\Platforms\AbstractPlatform;
810

9-
final readonly class Date implements \Stringable, StringNormalizable
11+
final readonly class Date implements \Stringable, StringNormalizable, NormalizableTypeWithSQLDeclaration
1012
{
1113
private const string DATE_FORMAT = 'Y-m-d';
1214

@@ -403,4 +405,13 @@ private function toDateTimeImmutable(): \DateTimeImmutable
403405
),
404406
);
405407
}
408+
409+
/**
410+
* @codeCoverageIgnore
411+
*/
412+
#[\Override]
413+
public static function getSQLDeclaration(array $column, AbstractPlatform $platform): string
414+
{
415+
return $platform->getDateTypeDeclarationSQL($column);
416+
}
406417
}

src/DependencyInjection/DoctrineTypeRegisterCompilerPass.php

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,40 @@
44

55
namespace DigitalCraftsman\DateTimePrecision\DependencyInjection;
66

7-
use DigitalCraftsman\DateTimePrecision\Doctrine\DateType;
8-
use DigitalCraftsman\DateTimePrecision\Doctrine\MomentType;
9-
use DigitalCraftsman\DateTimePrecision\Doctrine\MonthType;
10-
use DigitalCraftsman\DateTimePrecision\Doctrine\TimeType;
11-
use DigitalCraftsman\DateTimePrecision\Doctrine\WeekdaysType;
12-
use DigitalCraftsman\DateTimePrecision\Doctrine\WeekdayType;
13-
use DigitalCraftsman\DateTimePrecision\Doctrine\YearType;
7+
use DigitalCraftsman\DateTimePrecision\Date;
8+
use DigitalCraftsman\DateTimePrecision\Moment;
9+
use DigitalCraftsman\DateTimePrecision\Month;
10+
use DigitalCraftsman\DateTimePrecision\Time;
11+
use DigitalCraftsman\DateTimePrecision\Weekday;
12+
use DigitalCraftsman\DateTimePrecision\Weekdays;
13+
use DigitalCraftsman\DateTimePrecision\Year;
14+
use DigitalCraftsman\SelfAwareNormalizers\Doctrine\ArrayNormalizableThroughLookupType;
15+
use DigitalCraftsman\SelfAwareNormalizers\Doctrine\IntNormalizableThroughLookupType;
16+
use DigitalCraftsman\SelfAwareNormalizers\Doctrine\StringNormalizableThroughLookupType;
1417
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1518
use Symfony\Component\DependencyInjection\ContainerBuilder;
1619

1720
final readonly class DoctrineTypeRegisterCompilerPass implements CompilerPassInterface
1821
{
19-
public const TYPE_DEFINITION_PARAMETER = 'doctrine.dbal.connection_factory.types';
22+
public const string TYPE_DEFINITION_PARAMETER = 'doctrine.dbal.connection_factory.types';
2023

2124
#[\Override]
2225
public function process(ContainerBuilder $container): void
2326
{
24-
/** @var array<string, array{class: class-string}> $typeDefinitions */
27+
/**
28+
* @var array<string, array{
29+
* class: class-string,
30+
* }> $typeDefinitions
31+
*/
2532
$typeDefinitions = $container->getParameter(self::TYPE_DEFINITION_PARAMETER);
2633

27-
$typeDefinitions['dtp_moment'] = ['class' => MomentType::class];
28-
$typeDefinitions['dtp_time'] = ['class' => TimeType::class];
29-
$typeDefinitions['dtp_weekday'] = ['class' => WeekdayType::class];
30-
$typeDefinitions['dtp_weekdays'] = ['class' => WeekdaysType::class];
31-
$typeDefinitions['dtp_date'] = ['class' => DateType::class];
32-
$typeDefinitions['dtp_month'] = ['class' => MonthType::class];
33-
$typeDefinitions['dtp_year'] = ['class' => YearType::class];
34+
$typeDefinitions[Moment::class] = ['class' => StringNormalizableThroughLookupType::class];
35+
$typeDefinitions[Time::class] = ['class' => StringNormalizableThroughLookupType::class];
36+
$typeDefinitions[Weekday::class] = ['class' => StringNormalizableThroughLookupType::class];
37+
$typeDefinitions[Weekdays::class] = ['class' => ArrayNormalizableThroughLookupType::class];
38+
$typeDefinitions[Date::class] = ['class' => StringNormalizableThroughLookupType::class];
39+
$typeDefinitions[Month::class] = ['class' => StringNormalizableThroughLookupType::class];
40+
$typeDefinitions[Year::class] = ['class' => IntNormalizableThroughLookupType::class];
3441

3542
$container->setParameter(self::TYPE_DEFINITION_PARAMETER, $typeDefinitions);
3643
}

src/Doctrine/DateType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010

1111
/**
12+
* @deprecated
13+
*
1214
* @codeCoverageIgnore
1315
*/
1416
final class DateType extends StringNormalizableType

src/Doctrine/MomentType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
1212

1313
/**
14+
* @deprecated
15+
*
1416
* @codeCoverageIgnore
1517
*/
1618
final class MomentType extends StringNormalizableType

src/Doctrine/MonthType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010

1111
/**
12+
* @deprecated
13+
*
1214
* @codeCoverageIgnore
1315
*/
1416
final class MonthType extends StringNormalizableType

src/Doctrine/TimeType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010

1111
/**
12+
* @deprecated
13+
*
1214
* @codeCoverageIgnore
1315
*/
1416
final class TimeType extends StringNormalizableType

src/Doctrine/WeekdayType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Doctrine\DBAL\Platforms\AbstractPlatform;
1010

1111
/**
12+
* @deprecated
13+
*
1214
* @codeCoverageIgnore
1315
*/
1416
final class WeekdayType extends StringNormalizableType

src/Doctrine/WeekdaysType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
use DigitalCraftsman\SelfAwareNormalizers\Doctrine\ArrayNormalizableType;
99

1010
/**
11+
* @deprecated
12+
*
1113
* @codeCoverageIgnore
1214
*/
1315
final class WeekdaysType extends ArrayNormalizableType

0 commit comments

Comments
 (0)