Skip to content

Commit 9f982d1

Browse files
committed
schema/openapi parameter
1 parent 860bbed commit 9f982d1

File tree

2 files changed

+18
-70
lines changed

2 files changed

+18
-70
lines changed

src/Doctrine/Orm/Filter/AbstractUuidFilter.php

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -168,61 +168,26 @@ protected function getDoctrineArrayParameterType(): ?ArrayParameterType
168168
return null;
169169
}
170170

171-
public function getOpenApiParameters(Parameter $parameter): array
171+
public function getOpenApiParameters(Parameter $parameter): OpenApiParameter|array|null
172172
{
173173
$in = $parameter instanceof QueryParameter ? 'query' : 'header';
174-
$key = $parameter->getKey();
175174
$schema = $parameter->getSchema();
176-
$addStringParam = false;
177-
$addArrayParam = false;
178-
$openApiParameters = [];
175+
$isArraySchema = 'array' === ($schema['type'] ?? null);
179176

180-
if (null === $schema) {
181-
$addStringParam = true;
182-
$addArrayParam = true;
177+
if ($isArraySchema) {
178+
return new OpenApiParameter(name: $parameter->getKey().'[]', in: $in, style: 'deepObject', explode: true);
183179
}
184180

185-
foreach ($schema['oneOf'] ?? [$schema] as $item) {
186-
if (!isset($item['type']) || 'string' === $item['type']) {
187-
$addStringParam = true;
188-
}
189-
190-
if (!isset($item['type']) || 'array' === $item['type']) {
191-
$addArrayParam = true;
192-
}
193-
}
194-
195-
if ($addStringParam) {
196-
$openApiParameters[] = new OpenApiParameter(
197-
name: $key,
198-
in: $in,
199-
schema: self::UUID_SCHEMA,
200-
style: 'form',
201-
explode: false
202-
);
203-
}
204-
205-
if ($addArrayParam) {
206-
$openApiParameters[] = new OpenApiParameter(
207-
name: $key.'[]',
208-
in: $in,
209-
description: 'One or more Uuids',
210-
schema: [
211-
'type' => 'array',
212-
'items' => self::UUID_SCHEMA,
213-
],
214-
style: 'deepObject',
215-
explode: true
216-
);
217-
}
218-
219-
return $openApiParameters;
181+
return [
182+
new OpenApiParameter(name: $parameter->getKey(), in: $in),
183+
new OpenApiParameter(name: $parameter->getKey().'[]', in: $in, style: 'deepObject', explode: true),
184+
];
220185
}
221186

222187
public function getSchema(Parameter $parameter): array
223188
{
224-
if (null !== $parameter->getSchema()) {
225-
return $parameter->getSchema();
189+
if (false === $parameter->getCastToArray()) {
190+
return self::UUID_SCHEMA;
226191
}
227192

228193
return [

src/Doctrine/Orm/Filter/UlidFilter.php

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
namespace ApiPlatform\Doctrine\Orm\Filter;
1515

1616
use ApiPlatform\Metadata\Parameter;
17-
use ApiPlatform\Metadata\QueryParameter;
18-
use ApiPlatform\OpenApi\Model\Parameter as OpenApiParameter;
1917

2018
final class UlidFilter extends AbstractUuidFilter
2119
{
@@ -24,35 +22,20 @@ final class UlidFilter extends AbstractUuidFilter
2422
'format' => 'ulid',
2523
];
2624

27-
public function getOpenApiParameters(Parameter $parameter): array
25+
public function getSchema(Parameter $parameter): array
2826
{
29-
$in = $parameter instanceof QueryParameter ? 'query' : 'header';
30-
$key = $parameter->getKey();
27+
if (false === $parameter->getCastToArray()) {
28+
return self::ULID_SCHEMA;
29+
}
3130

3231
return [
33-
new OpenApiParameter(
34-
name: $key,
35-
in: $in,
36-
schema: self::ULID_SCHEMA,
37-
style: 'form',
38-
explode: false
39-
),
40-
new OpenApiParameter(
41-
name: $key.'[]',
42-
in: $in,
43-
description: 'One or more Ulids',
44-
schema: [
32+
'oneOf' => [
33+
self::ULID_SCHEMA,
34+
[
4535
'type' => 'array',
4636
'items' => self::ULID_SCHEMA,
4737
],
48-
style: 'deepObject',
49-
explode: true
50-
),
38+
],
5139
];
5240
}
53-
54-
public function getSchema(Parameter $parameter): array
55-
{
56-
return self::ULID_SCHEMA;
57-
}
5841
}

0 commit comments

Comments
 (0)