Skip to content

Commit a2b33c1

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

File tree

2 files changed

+20
-66
lines changed

2 files changed

+20
-66
lines changed

src/Doctrine/Orm/Filter/AbstractUuidFilter.php

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -168,61 +168,30 @@ 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-
}
181+
if (isset($schema['oneOf'])) {
182+
return [
183+
new OpenApiParameter(name: $parameter->getKey(), in: $in),
184+
new OpenApiParameter(name: $parameter->getKey().'[]', in: $in, style: 'deepObject', explode: true),
185+
];
193186
}
194187

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;
188+
return null;
220189
}
221190

222191
public function getSchema(Parameter $parameter): array
223192
{
224-
if (null !== $parameter->getSchema()) {
225-
return $parameter->getSchema();
193+
if (false === $parameter->getCastToArray()) {
194+
return self::UUID_SCHEMA;
226195
}
227196

228197
return [

src/Doctrine/Orm/Filter/UlidFilter.php

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,35 +24,20 @@ final class UlidFilter extends AbstractUuidFilter
2424
'format' => 'ulid',
2525
];
2626

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

3233
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: [
34+
'oneOf' => [
35+
self::ULID_SCHEMA,
36+
[
4537
'type' => 'array',
4638
'items' => self::ULID_SCHEMA,
4739
],
48-
style: 'deepObject',
49-
explode: true
50-
),
40+
],
5141
];
5242
}
53-
54-
public function getSchema(Parameter $parameter): array
55-
{
56-
return self::ULID_SCHEMA;
57-
}
5843
}

0 commit comments

Comments
 (0)