Skip to content

Commit 5f4ceb6

Browse files
Merge pull request #4845 from nawel-les-tilleuls/feat/upgrade-filters
Migrate ApiFilter to new format
2 parents 1470b1f + 77bd78d commit 5f4ceb6

File tree

8 files changed

+417
-6
lines changed

8 files changed

+417
-6
lines changed

features/main/subresource.feature

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Feature: Subresource support
108108
"hydra:totalItems": 2,
109109
"hydra:search": {
110110
"@type": "hydra:IriTemplate",
111-
"hydra:template": "/dummies/1/related_dummies{?relatedToDummyFriend.dummyFriend,relatedToDummyFriend.dummyFriend[],name,age,age[]}",
111+
"hydra:template": "/dummies/1/related_dummies{?relatedToDummyFriend.dummyFriend,relatedToDummyFriend.dummyFriend[],name,age,age[],id,id[],symfony,symfony[],dummyDate[before],dummyDate[strictly_before],dummyDate[after],dummyDate[strictly_after]}",
112112
"hydra:variableRepresentation": "BasicRepresentation",
113113
"hydra:mapping": [
114114
{
@@ -140,6 +140,54 @@ Feature: Subresource support
140140
"variable": "age[]",
141141
"property": "age",
142142
"required": false
143+
},
144+
{
145+
"@type": "IriTemplateMapping",
146+
"variable": "id",
147+
"property": "id",
148+
"required": false
149+
},
150+
{
151+
"@type": "IriTemplateMapping",
152+
"variable": "id[]",
153+
"property": "id",
154+
"required": false
155+
},
156+
{
157+
"@type": "IriTemplateMapping",
158+
"variable": "symfony",
159+
"property": "symfony",
160+
"required": false
161+
},
162+
{
163+
"@type": "IriTemplateMapping",
164+
"variable": "symfony[]",
165+
"property": "symfony",
166+
"required": false
167+
},
168+
{
169+
"@type": "IriTemplateMapping",
170+
"variable": "dummyDate[before]",
171+
"property": "dummyDate",
172+
"required": false
173+
},
174+
{
175+
"@type": "IriTemplateMapping",
176+
"variable": "dummyDate[strictly_before]",
177+
"property": "dummyDate",
178+
"required": false
179+
},
180+
{
181+
"@type": "IriTemplateMapping",
182+
"variable": "dummyDate[after]",
183+
"property": "dummyDate",
184+
"required": false
185+
},
186+
{
187+
"@type": "IriTemplateMapping",
188+
"variable": "dummyDate[strictly_after]",
189+
"property": "dummyDate",
190+
"required": false
143191
}
144192
]
145193
}
@@ -185,7 +233,7 @@ Feature: Subresource support
185233
},
186234
"hydra:search": {
187235
"@type": "hydra:IriTemplate",
188-
"hydra:template": "/dummies/1/related_dummies{?relatedToDummyFriend.dummyFriend,relatedToDummyFriend.dummyFriend[],name,age,age[]}",
236+
"hydra:template": "/dummies/1/related_dummies{?relatedToDummyFriend.dummyFriend,relatedToDummyFriend.dummyFriend[],name,age,age[],id,id[],symfony,symfony[],dummyDate[before],dummyDate[strictly_before],dummyDate[after],dummyDate[strictly_after]}",
189237
"hydra:variableRepresentation": "BasicRepresentation",
190238
"hydra:mapping": [
191239
{
@@ -217,6 +265,54 @@ Feature: Subresource support
217265
"variable": "age[]",
218266
"property": "age",
219267
"required": false
268+
},
269+
{
270+
"@type": "IriTemplateMapping",
271+
"variable": "id",
272+
"property": "id",
273+
"required": false
274+
},
275+
{
276+
"@type": "IriTemplateMapping",
277+
"variable": "id[]",
278+
"property": "id",
279+
"required": false
280+
},
281+
{
282+
"@type": "IriTemplateMapping",
283+
"variable": "symfony",
284+
"property": "symfony",
285+
"required": false
286+
},
287+
{
288+
"@type": "IriTemplateMapping",
289+
"variable": "symfony[]",
290+
"property": "symfony",
291+
"required": false
292+
},
293+
{
294+
"@type": "IriTemplateMapping",
295+
"variable": "dummyDate[before]",
296+
"property": "dummyDate",
297+
"required": false
298+
},
299+
{
300+
"@type": "IriTemplateMapping",
301+
"variable": "dummyDate[strictly_before]",
302+
"property": "dummyDate",
303+
"required": false
304+
},
305+
{
306+
"@type": "IriTemplateMapping",
307+
"variable": "dummyDate[after]",
308+
"property": "dummyDate",
309+
"required": false
310+
},
311+
{
312+
"@type": "IriTemplateMapping",
313+
"variable": "dummyDate[strictly_after]",
314+
"property": "dummyDate",
315+
"required": false
220316
}
221317
]
222318
}

phpstan.neon.dist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ parameters:
224224
- src/Core/Upgrade/SubresourceTransformer.php
225225
- src/Core/Upgrade/UpgradeApiResourceVisitor.php
226226
- src/Core/Upgrade/UpgradeApiSubresourceVisitor.php
227+
- src/Core/Upgrade/UpgradeApiFilterVisitor.php
227228
- src/Core/Util/AttributesExtractor.php
228229
- src/Core/Util/ErrorFormatGuesser.php
229230
- src/Core/Util/Inflector.php

src/Core/Bridge/Symfony/Bundle/Command/UpgradeApiResourceCommand.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use ApiPlatform\Core\Operation\Factory\SubresourceOperationFactoryInterface;
2020
use ApiPlatform\Core\Upgrade\ColorConsoleDiffFormatter;
2121
use ApiPlatform\Core\Upgrade\SubresourceTransformer;
22+
use ApiPlatform\Core\Upgrade\UpgradeApiFilterVisitor;
2223
use ApiPlatform\Core\Upgrade\UpgradeApiResourceVisitor;
2324
use ApiPlatform\Core\Upgrade\UpgradeApiSubresourceVisitor;
2425
use ApiPlatform\Exception\ResourceClassNotFoundException;
@@ -107,6 +108,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
107108
$traverser = new NodeTraverser();
108109
[$attribute, $isAnnotation] = $this->readApiResource($resourceClass);
109110

111+
$traverser->addVisitor(new UpgradeApiFilterVisitor($this->reader, $resourceClass));
112+
110113
if (!$attribute) {
111114
continue;
112115
}

0 commit comments

Comments
 (0)