Graphql Doctrine Versions Save

Automatic GraphQL types from Doctrine entities

9.0.0

6 months ago

BREAKING CHANGE

8.1.2

7 months ago

Changes

  • Not found entity will throw a UserError, not an Error

8.1.1

7 months ago

Changes

  • Minimal version is PHP 8.2

8.1.0

1 year ago

Added

  • Add new emptyStringAsHighest to sorting

8.0.1

1 year ago

Changes

  • Slighlty improve attribute documentation and typing

8.0.0

1 year ago

BREAKING CHANGE

All previously existing annotations are now PHP native Attribute. This is a major breaking change and all annotations must be migrated to the new attributes.

Notable changes:

  • API\Argument is now declared on the parameter itself
  • API\Filter is used directly, possibly multiple times, without wrapping in API\Filters
  • API\Filters is not necessary anymore and was dropped
  • API\Sorting requires a single class name, but can be used multiple times

Partially automated migration

The following is a configuration file for Rector that will migrate both Doctrine annotations and also GraphQL Doctrine annotations to attributes.

The migration for GraphQL Doctrine is imperfect, so Sorting and Argument will have to be adjusted manually afterward.

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\Php80\Rector\Class_\AnnotationToAttributeRector;
use Rector\Php80\Rector\Property\NestedAnnotationToAttributeRector;
use Rector\Php80\ValueObject\AnnotationPropertyToAttributeClass;
use Rector\Php80\ValueObject\AnnotationToAttribute;
use Rector\Php80\ValueObject\NestedAnnotationToAttribute;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->parallel();

    $rectorConfig->sets([
        \Rector\Doctrine\Set\DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
    ]);

    $rectorConfig->ruleWithConfiguration(NestedAnnotationToAttributeRector::class, [
        new NestedAnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Filters', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Filter')], \true),
        new NestedAnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Sorting', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Sorting', 'classes', \true)]),
        new NestedAnnotationToAttribute('API\Filters', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Filter')], \true),
        new NestedAnnotationToAttribute('API\Sorting', [new AnnotationPropertyToAttributeClass('GraphQL\\Doctrine\\Attribute\\Sorting', 'classes', \true)]),
    ]);

    $rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Argument', 'GraphQL\\Doctrine\\Attribute\\Argument'),
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Exclude', 'GraphQL\\Doctrine\\Attribute\\Exclude'),
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Field', 'GraphQL\\Doctrine\\Attribute\\Field'),
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\FilterGroupCondition', 'GraphQL\\Doctrine\\Attribute\\FilterGroupCondition'),
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Filter', 'GraphQL\\Doctrine\\Attribute\\Filter'),
        new AnnotationToAttribute('GraphQL\\Doctrine\\Annotation\\Input', 'GraphQL\\Doctrine\\Attribute\\Input'),
        new AnnotationToAttribute('API\Argument', 'GraphQL\\Doctrine\\Attribute\\Argument'),
        new AnnotationToAttribute('API\Exclude', 'GraphQL\\Doctrine\\Attribute\\Exclude'),
        new AnnotationToAttribute('API\Field', 'GraphQL\\Doctrine\\Attribute\\Field'),
        new AnnotationToAttribute('API\FilterGroupCondition', 'GraphQL\\Doctrine\\Attribute\\FilterGroupCondition'),
        new AnnotationToAttribute('API\Filter', 'GraphQL\\Doctrine\\Attribute\\Filter'),
        new AnnotationToAttribute('API\Input', 'GraphQL\\Doctrine\\Attribute\\Input'),
    ]);
};

Special thanks

Special thanks to @themasch for starting this work.

7.3.0

1 year ago

Added

  • Support Collection<MyType> syntax for PhpDoc

7.2.4

1 year ago

Changes

  • Update PHP deps

7.2.3

2 years ago

Changes

  • Minimal version is PHP 8.1

7.2.2

2 years ago