Skip to content

Commit

Permalink
Made Carbon types compatible with DBAL 4 (#434)
Browse files Browse the repository at this point in the history
  • Loading branch information
derrabus authored Feb 8, 2024
1 parent ffccbed commit 908efd3
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 233 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"require-dev": {
"doctrine/annotations": "^1.14 || ^2",
"doctrine/coding-standard": "^9.0.2 || ^12.0",
"nesbot/carbon": "*",
"nesbot/carbon": "^2.72 || ^3",
"phpunit/phpunit": "^8.5 || ^9.6",
"squizlabs/php_codesniffer": "^3.8",
"symfony/cache": "^5.4 || ^6.4 || ^7.0",
Expand Down
30 changes: 2 additions & 28 deletions src/Types/CarbonDateTimeType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\Carbon;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateTimeType;

class CarbonDateTimeType extends DateTimeType
{
use CarbonTypeImplementation;

public const CARBONDATETIME = 'carbondatetime';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATETIME;
}

/**
* {@inheritDoc}
*
* @return Carbon|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return Carbon::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
30 changes: 2 additions & 28 deletions src/Types/CarbonDateTimeTzType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\Carbon;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateTimeTzType;

class CarbonDateTimeTzType extends DateTimeTzType
{
use CarbonTypeImplementation;

public const CARBONDATETIMETZ = 'carbondatetimetz';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATETIMETZ;
}

/**
* {@inheritDoc}
*
* @return Carbon|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return Carbon::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
30 changes: 2 additions & 28 deletions src/Types/CarbonDateType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\Carbon;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateType;

class CarbonDateType extends DateType
{
use CarbonTypeImplementation;

public const CARBONDATE = 'carbondate';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATE;
}

/**
* {@inheritDoc}
*
* @return Carbon|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return Carbon::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
34 changes: 4 additions & 30 deletions src/Types/CarbonImmutableDateTimeType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\CarbonImmutable;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateTimeType;
use Carbon\Doctrine\DateTimeImmutableType;

class CarbonImmutableDateTimeType extends DateTimeType
class CarbonImmutableDateTimeType extends DateTimeImmutableType
{
use CarbonImmutableTypeImplementation;

public const CARBONDATETIME = 'carbondatetime_immutable';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATETIME;
}

/**
* {@inheritDoc}
*
* @return CarbonImmutable|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return CarbonImmutable::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
34 changes: 4 additions & 30 deletions src/Types/CarbonImmutableDateTimeTzType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\CarbonImmutable;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateTimeTzType;
use Doctrine\DBAL\Types\DateTimeTzImmutableType;

class CarbonImmutableDateTimeTzType extends DateTimeTzType
class CarbonImmutableDateTimeTzType extends DateTimeTzImmutableType
{
use CarbonImmutableTypeImplementation;

public const CARBONDATETIMETZ = 'carbondatetimetz_immutable';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATETIMETZ;
}

/**
* {@inheritDoc}
*
* @return CarbonImmutable|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return CarbonImmutable::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
34 changes: 4 additions & 30 deletions src/Types/CarbonImmutableDateType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\CarbonImmutable;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\DateType;
use Doctrine\DBAL\Types\DateImmutableType;

class CarbonImmutableDateType extends DateType
class CarbonImmutableDateType extends DateImmutableType
{
use CarbonImmutableTypeImplementation;

public const CARBONDATE = 'carbondate_immutable';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONDATE;
}

/**
* {@inheritDoc}
*
* @return CarbonImmutable|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return CarbonImmutable::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
34 changes: 4 additions & 30 deletions src/Types/CarbonImmutableTimeType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

namespace DoctrineExtensions\Types;

use Carbon\CarbonImmutable;
use DateTime;
use DateTimeInterface;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\TimeType;
use Doctrine\DBAL\Types\TimeImmutableType;

class CarbonImmutableTimeType extends TimeType
class CarbonImmutableTimeType extends TimeImmutableType
{
use CarbonImmutableTypeImplementation;

public const CARBONTIME = 'carbontime_immutable';

/**
Expand All @@ -19,28 +17,4 @@ public function getName()
{
return self::CARBONTIME;
}

/**
* {@inheritDoc}
*
* @return CarbonImmutable|DateTimeInterface
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$result = parent::convertToPHPValue($value, $platform);

if ($result instanceof DateTime) {
return CarbonImmutable::instance($result);
}

return $result;
}

/**
* {@inheritDoc}
*/
public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
37 changes: 37 additions & 0 deletions src/Types/CarbonImmutableTypeImplementation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

declare(strict_types=1);

namespace DoctrineExtensions\Types;

use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Doctrine\DBAL\Platforms\AbstractPlatform;

/** @internal */
trait CarbonImmutableTypeImplementation
{
public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string
{
if ($value instanceof Carbon) {
$value = CarbonImmutable::instance($value);
}

return parent::convertToDatabaseValue($value, $platform);
}

public function convertToPHPValue($value, AbstractPlatform $platform): ?CarbonImmutable
{
$result = parent::convertToPHPValue($value, $platform);
if ($result === null) {
return null;
}

return CarbonImmutable::instance($result);
}

public function requiresSQLCommentHint(AbstractPlatform $platform): bool
{
return true;
}
}
Loading

0 comments on commit 908efd3

Please sign in to comment.