Skip to content

Commit 14e2c8e

Browse files
committed
fix(metadata): graphql can be disabled but with an existing operation
1 parent ab71ee5 commit 14e2c8e

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

src/Laravel/ApiPlatformProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@ public function register(): void
366366
$config->get('api-platform.graphql.enabled'),
367367
),
368368
)
369-
)
369+
),
370+
$config->get('api-platform.graphql.enabled')
370371
)
371372
)
372373
)

src/Metadata/Resource/Factory/LinkResourceMetadataCollectionFactory.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*/
2424
final class LinkResourceMetadataCollectionFactory implements ResourceMetadataCollectionFactoryInterface
2525
{
26-
public function __construct(private readonly LinkFactoryInterface $linkFactory, private readonly ?ResourceMetadataCollectionFactoryInterface $decorated = null)
26+
public function __construct(private readonly LinkFactoryInterface $linkFactory, private readonly ?ResourceMetadataCollectionFactoryInterface $decorated = null, private bool $graphQlEnabled = false)
2727
{
2828
}
2929

@@ -37,6 +37,10 @@ public function create(string $resourceClass): ResourceMetadataCollection
3737
$resourceMetadataCollection = $this->decorated->create($resourceClass);
3838
}
3939

40+
if (!$this->graphQlEnabled) {
41+
return $resourceMetadataCollection;
42+
}
43+
4044
foreach ($resourceMetadataCollection as $i => $resource) {
4145
$graphQlOperations = [];
4246
foreach ($resource->getGraphQlOperations() ?? [] as $graphQlOperation) {

src/Metadata/Resource/Factory/MetadataCollectionFactoryTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,11 @@ private function buildResourceOperations(array $metadataCollection, string $reso
141141
$resources[$index] = $resource = $resource->withOperations(new Operations($operations)); // @phpstan-ignore-line
142142
}
143143

144-
$graphQlOperations = $resource->getGraphQlOperations();
145144
if (!$this->graphQlEnabled) {
146145
continue;
147146
}
148147

148+
$graphQlOperations = $resource->getGraphQlOperations();
149149
if (null === $graphQlOperations) {
150150
if (!$hasApiResource) {
151151
$resources[$index] = $resources[$index]->withGraphQlOperations([]);

src/Symfony/Bundle/Resources/config/metadata/resource.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
<service id="api_platform.metadata.resource.metadata_collection_factory.link" class="ApiPlatform\Metadata\Resource\Factory\LinkResourceMetadataCollectionFactory" decorates="api_platform.metadata.resource.metadata_collection_factory" decoration-priority="500" public="false">
5353
<argument type="service" id="api_platform.metadata.resource.link_factory" />
5454
<argument type="service" id="api_platform.metadata.resource.metadata_collection_factory.link.inner" />
55+
<argument>%api_platform.graphql.enabled%</argument>
5556
</service>
5657

5758
<!-- must run after uri template, do not change uriTemplate neither the operation names in < 500 priorities -->

0 commit comments

Comments
 (0)