Skip to content

Commit 4da588e

Browse files
committed
refactor(doctrine): introduce OpenApiFilterTrait.php
1 parent ae64a40 commit 4da588e

File tree

7 files changed

+48
-72
lines changed

7 files changed

+48
-72
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the API Platform project.
5+
*
6+
* (c) Kévin Dunglas <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace ApiPlatform\Doctrine\Common\Filter;
15+
16+
use ApiPlatform\Metadata\Parameter;
17+
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
18+
19+
trait OpenApiFilterTrait
20+
{
21+
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
22+
{
23+
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
24+
}
25+
26+
public function getDescription(string $resourceClass): array
27+
{
28+
return [];
29+
}
30+
}

src/Doctrine/Odm/Filter/ExactFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313

1414
namespace ApiPlatform\Doctrine\Odm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1718
use ApiPlatform\Metadata\Operation;
18-
use ApiPlatform\Metadata\Parameter;
19-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2019
use Doctrine\ODM\MongoDB\Aggregation\Builder;
2120

2221
final class ExactFilter implements FilterInterface, OpenApiParameterFilterInterface
2322
{
23+
use OpenApiFilterTrait;
24+
2425
public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
2526
{
2627
if (!$parameter = $context['parameter'] ?? null) {
@@ -37,14 +38,4 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
3738
->field($property)
3839
->in($values);
3940
}
40-
41-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
42-
{
43-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
44-
}
45-
46-
public function getDescription(string $resourceClass): array
47-
{
48-
return [];
49-
}
5041
}

src/Doctrine/Odm/Filter/IriFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313

1414
namespace ApiPlatform\Doctrine\Odm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1718
use ApiPlatform\Metadata\Operation;
18-
use ApiPlatform\Metadata\Parameter;
1919
use ApiPlatform\Metadata\ParameterProviderFilterInterface;
20-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2120
use ApiPlatform\State\ParameterProvider\IriConverterParameterProvider;
2221
use Doctrine\ODM\MongoDB\Aggregation\Builder;
2322

2423
final class IriFilter implements FilterInterface, OpenApiParameterFilterInterface, ParameterProviderFilterInterface
2524
{
25+
use OpenApiFilterTrait;
26+
2627
public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
2728
{
2829
if (!$parameter = $context['parameter'] ?? null) {
@@ -47,14 +48,4 @@ public static function getParameterProvider(): string
4748
{
4849
return IriConverterParameterProvider::class;
4950
}
50-
51-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
52-
{
53-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
54-
}
55-
56-
public function getDescription(string $resourceClass): array
57-
{
58-
return [];
59-
}
6051
}

src/Doctrine/Odm/Filter/PartialSearchFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313

1414
namespace ApiPlatform\Doctrine\Odm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1718
use ApiPlatform\Metadata\Operation;
18-
use ApiPlatform\Metadata\Parameter;
19-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2019
use Doctrine\ODM\MongoDB\Aggregation\Builder;
2120
use MongoDB\BSON\Regex;
2221

2322
final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilterInterface
2423
{
24+
use OpenApiFilterTrait;
25+
2526
public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
2627
{
2728
if (!$parameter = $context['parameter'] ?? null) {
@@ -42,14 +43,4 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera
4243
->field($property)
4344
->equals(new Regex($escapedValue, 'i'));
4445
}
45-
46-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
47-
{
48-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
49-
}
50-
51-
public function getDescription(string $resourceClass): array
52-
{
53-
return [];
54-
}
5546
}

src/Doctrine/Orm/Filter/ExactFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313

1414
namespace ApiPlatform\Doctrine\Orm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
1718
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1819
use ApiPlatform\Metadata\Operation;
19-
use ApiPlatform\Metadata\Parameter;
20-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2120
use Doctrine\ORM\QueryBuilder;
2221

2322
final class ExactFilter implements FilterInterface, OpenApiParameterFilterInterface
2423
{
24+
use OpenApiFilterTrait;
25+
2526
public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void
2627
{
2728
if (!$parameter = $context['parameter'] ?? null) {
@@ -41,14 +42,4 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q
4142
->andWhere(\sprintf('%s.%s = :%s', $alias, $property, $parameterName))
4243
->setParameter($parameterName, $value);
4344
}
44-
45-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
46-
{
47-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
48-
}
49-
50-
public function getDescription(string $resourceClass): array
51-
{
52-
return [];
53-
}
5445
}

src/Doctrine/Orm/Filter/IriFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@
1313

1414
namespace ApiPlatform\Doctrine\Orm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
1718
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1819
use ApiPlatform\Metadata\Operation;
19-
use ApiPlatform\Metadata\Parameter;
2020
use ApiPlatform\Metadata\ParameterProviderFilterInterface;
21-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2221
use ApiPlatform\State\ParameterProvider\IriConverterParameterProvider;
2322
use Doctrine\ORM\QueryBuilder;
2423

2524
final class IriFilter implements FilterInterface, OpenApiParameterFilterInterface, ParameterProviderFilterInterface
2625
{
26+
use OpenApiFilterTrait;
27+
2728
public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void
2829
{
2930
if (!$parameter = $context['parameter'] ?? null) {
@@ -49,14 +50,4 @@ public static function getParameterProvider(): string
4950
{
5051
return IriConverterParameterProvider::class;
5152
}
52-
53-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
54-
{
55-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
56-
}
57-
58-
public function getDescription(string $resourceClass): array
59-
{
60-
return [];
61-
}
6253
}

src/Doctrine/Orm/Filter/PartialSearchFilter.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313

1414
namespace ApiPlatform\Doctrine\Orm\Filter;
1515

16+
use ApiPlatform\Doctrine\Common\Filter\OpenApiFilterTrait;
1617
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
1718
use ApiPlatform\Metadata\OpenApiParameterFilterInterface;
1819
use ApiPlatform\Metadata\Operation;
19-
use ApiPlatform\Metadata\Parameter;
20-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
2120
use Doctrine\ORM\QueryBuilder;
2221

2322
final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilterInterface
2423
{
24+
use OpenApiFilterTrait;
25+
2526
public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void
2627
{
2728
if (!$parameter = $context['parameter'] ?? null) {
@@ -45,14 +46,4 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q
4546
->andWhere($likeExpression)
4647
->setParameter($parameterName, '%'.strtolower($value).'%');
4748
}
48-
49-
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
50-
{
51-
return new OpenApiParameter(name: $parameter->getKey().'[]', in: 'query', style: 'deepObject', explode: true);
52-
}
53-
54-
public function getDescription(string $resourceClass): array
55-
{
56-
return [];
57-
}
5849
}

0 commit comments

Comments
 (0)