From f6344ca8bde4b2d43ed42074c8ad632de7daa68d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Parafi=C5=84ski?= Date: Tue, 4 Feb 2025 17:17:47 +0100 Subject: [PATCH] IBX-8470: Upgraded codebase to Symfony 6 (#78) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * IBX-8470: Upgraded dependencies to Symfony 6 * Fixed phpstan issues after upgrading * [GraphQL] Replaced deprecated resolver expression function usage --------- Co-authored-by: Adam Wójs --- composer.json | 14 +++++++------- phpstan-baseline.neon | 6 ------ .../config/graphql/types/QueryFieldType.types.yaml | 2 +- .../ContentView/QueryResultsPagerFantaAdapter.php | 11 +++++++---- .../QueryResultsWithLocationPagerFantaAdapter.php | 11 +++++++---- src/lib/GraphQL/QueryFieldResolver.php | 2 +- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/composer.json b/composer.json index 4ba1ecb..9407c32 100644 --- a/composer.json +++ b/composer.json @@ -15,13 +15,13 @@ "ibexa/graphql": "~5.0.x-dev", "ibexa/rest": "~5.0.x-dev", "psr/log": "^1.1", - "symfony/dependency-injection": "^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/expression-language": "^5.0", - "symfony/framework-bundle": "^5.0", - "symfony/http-kernel": "^5.0", - "symfony/translation": "^5.0", - "symfony/yaml": "^5.0" + "symfony/dependency-injection": "^6.4", + "symfony/event-dispatcher": "^6.4", + "symfony/expression-language": "^6.4", + "symfony/framework-bundle": "^6.4", + "symfony/http-kernel": "^6.4", + "symfony/translation": "^6.4", + "symfony/yaml": "^6.4" }, "autoload": { "psr-4": { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index e068e8f..ce28a88 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -90,12 +90,6 @@ parameters: count: 1 path: src/lib/Persistence/Legacy/Content/FieldValue/Converter/QueryConverter.php - - - message: '#^Anonymous function should return Ibexa\\Contracts\\Core\\Repository\\Values\\Content\\Content but returns Ibexa\\Contracts\\Core\\Repository\\Values\\ValueObject\.$#' - identifier: return.type - count: 1 - path: src/lib/QueryFieldService.php - - message: '#^Method Ibexa\\FieldTypeQuery\\QueryFieldService\:\:isExpression\(\) has parameter \$expression with no type specified\.$#' identifier: missingType.parameter diff --git a/src/bundle/Resources/config/graphql/types/QueryFieldType.types.yaml b/src/bundle/Resources/config/graphql/types/QueryFieldType.types.yaml index 16a51fa..69a3e87 100644 --- a/src/bundle/Resources/config/graphql/types/QueryFieldType.types.yaml +++ b/src/bundle/Resources/config/graphql/types/QueryFieldType.types.yaml @@ -18,7 +18,7 @@ ContentQueryFieldSettings: parameters: type: "[ContentQueryFieldParameter]" description: "Parameters used to generate the Query from the Query type" - resolve: "@=resolver('QueryFieldDefinitionParameters', [value['Parameters']])" + resolve: "@=query('QueryFieldDefinitionParameters', [value['Parameters']])" returnedType: type: ContentType description: "Content type returned by the field" diff --git a/src/lib/ContentView/QueryResultsPagerFantaAdapter.php b/src/lib/ContentView/QueryResultsPagerFantaAdapter.php index c167b0b..09fe825 100644 --- a/src/lib/ContentView/QueryResultsPagerFantaAdapter.php +++ b/src/lib/ContentView/QueryResultsPagerFantaAdapter.php @@ -11,6 +11,9 @@ use Ibexa\Contracts\FieldTypeQuery\QueryFieldServiceInterface; use Pagerfanta\Adapter\AdapterInterface; +/** + * @implements AdapterInterface<\Ibexa\Contracts\Core\Repository\Values\Content\Content> + */ final class QueryResultsPagerFantaAdapter implements AdapterInterface { /** @var \Ibexa\Contracts\FieldTypeQuery\QueryFieldServiceInterface */ @@ -32,15 +35,15 @@ public function __construct( $this->fieldDefinitionIdentifier = $fieldDefinitionIdentifier; } - public function getNbResults() + public function getNbResults(): int { - return $this->queryFieldService->countContentItems( + return max($this->queryFieldService->countContentItems( $this->content, $this->fieldDefinitionIdentifier - ); + ), 0); } - public function getSlice($offset, $length) + public function getSlice($offset, $length): iterable { return $this->queryFieldService->loadContentItemsSlice( $this->content, diff --git a/src/lib/ContentView/QueryResultsWithLocationPagerFantaAdapter.php b/src/lib/ContentView/QueryResultsWithLocationPagerFantaAdapter.php index ad2dd5f..ad0ff48 100644 --- a/src/lib/ContentView/QueryResultsWithLocationPagerFantaAdapter.php +++ b/src/lib/ContentView/QueryResultsWithLocationPagerFantaAdapter.php @@ -11,6 +11,9 @@ use Ibexa\Contracts\FieldTypeQuery\QueryFieldLocationService; use Pagerfanta\Adapter\AdapterInterface; +/** + * @implements AdapterInterface<\Ibexa\Contracts\Core\Repository\Values\Content\Content> + */ final class QueryResultsWithLocationPagerFantaAdapter implements AdapterInterface { /** @var \Ibexa\Contracts\FieldTypeQuery\QueryFieldLocationService */ @@ -32,15 +35,15 @@ public function __construct( $this->fieldDefinitionIdentifier = $fieldDefinitionIdentifier; } - public function getNbResults() + public function getNbResults(): int { - return $this->queryFieldService->countContentItemsForLocation( + return max($this->queryFieldService->countContentItemsForLocation( $this->location, $this->fieldDefinitionIdentifier - ); + ), 0); } - public function getSlice($offset, $length) + public function getSlice($offset, $length): iterable { return $this->queryFieldService->loadContentItemsSliceForLocation( $this->location, diff --git a/src/lib/GraphQL/QueryFieldResolver.php b/src/lib/GraphQL/QueryFieldResolver.php index 35836cd..39b96cb 100644 --- a/src/lib/GraphQL/QueryFieldResolver.php +++ b/src/lib/GraphQL/QueryFieldResolver.php @@ -32,7 +32,7 @@ public function resolveQueryField(Field $field, Content $content): iterable } /** - * @return \GraphQL\Executor\Promise\Promise|\Overblog\GraphQLBundle\Relay\Connection\Output\Connection|null + * @return \GraphQL\Executor\Promise\Promise|\Overblog\GraphQLBundle\Relay\Connection\Output\Connection<\Ibexa\Contracts\Core\Repository\Values\Content\Content>|null */ public function resolveQueryFieldConnection(Argument $args, ?Field $field, Content $content) {