Skip to content

Commit 8137481

Browse files
authored
fix(openapi): CreateManyArgs does not take array as input (#1246)
1 parent 3e3e44c commit 8137481

File tree

6 files changed

+82
-10
lines changed

6 files changed

+82
-10
lines changed

packages/plugins/openapi/src/rpc-generator.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,15 @@ export class RPCOpenAPIGenerator extends OpenAPIGeneratorBase {
176176
type: 'object',
177177
required: ['data'],
178178
properties: {
179-
data: this.ref(`${modelName}CreateManyInput`),
179+
data: this.oneOf(
180+
this.ref(`${modelName}CreateManyInput`),
181+
this.array(this.ref(`${modelName}CreateManyInput`))
182+
),
183+
skipDuplicates: {
184+
type: 'boolean',
185+
description:
186+
'Do not insert records with unique fields or ID fields that already exist.',
187+
},
180188
meta: this.ref('_Meta'),
181189
},
182190
},

packages/plugins/openapi/tests/baseline/rpc-3.0.0.baseline.yaml

+27-3
Original file line numberDiff line numberDiff line change
@@ -3194,7 +3194,15 @@ components:
31943194
- data
31953195
properties:
31963196
data:
3197-
$ref: '#/components/schemas/UserCreateManyInput'
3197+
oneOf:
3198+
- $ref: '#/components/schemas/UserCreateManyInput'
3199+
- type: array
3200+
items:
3201+
$ref: '#/components/schemas/UserCreateManyInput'
3202+
skipDuplicates:
3203+
type: boolean
3204+
description: Do not insert records with unique fields or ID fields that already
3205+
exist.
31983206
meta:
31993207
$ref: '#/components/schemas/_Meta'
32003208
UserFindUniqueArgs:
@@ -3374,7 +3382,15 @@ components:
33743382
- data
33753383
properties:
33763384
data:
3377-
$ref: '#/components/schemas/ProfileCreateManyInput'
3385+
oneOf:
3386+
- $ref: '#/components/schemas/ProfileCreateManyInput'
3387+
- type: array
3388+
items:
3389+
$ref: '#/components/schemas/ProfileCreateManyInput'
3390+
skipDuplicates:
3391+
type: boolean
3392+
description: Do not insert records with unique fields or ID fields that already
3393+
exist.
33783394
meta:
33793395
$ref: '#/components/schemas/_Meta'
33803396
ProfileFindUniqueArgs:
@@ -3554,7 +3570,15 @@ components:
35543570
- data
35553571
properties:
35563572
data:
3557-
$ref: '#/components/schemas/Post_ItemCreateManyInput'
3573+
oneOf:
3574+
- $ref: '#/components/schemas/Post_ItemCreateManyInput'
3575+
- type: array
3576+
items:
3577+
$ref: '#/components/schemas/Post_ItemCreateManyInput'
3578+
skipDuplicates:
3579+
type: boolean
3580+
description: Do not insert records with unique fields or ID fields that already
3581+
exist.
35583582
meta:
35593583
$ref: '#/components/schemas/_Meta'
35603584
Post_ItemFindUniqueArgs:

packages/plugins/openapi/tests/baseline/rpc-3.1.0.baseline.yaml

+27-3
Original file line numberDiff line numberDiff line change
@@ -3248,7 +3248,15 @@ components:
32483248
- data
32493249
properties:
32503250
data:
3251-
$ref: '#/components/schemas/UserCreateManyInput'
3251+
oneOf:
3252+
- $ref: '#/components/schemas/UserCreateManyInput'
3253+
- type: array
3254+
items:
3255+
$ref: '#/components/schemas/UserCreateManyInput'
3256+
skipDuplicates:
3257+
type: boolean
3258+
description: Do not insert records with unique fields or ID fields that already
3259+
exist.
32523260
meta:
32533261
$ref: '#/components/schemas/_Meta'
32543262
UserFindUniqueArgs:
@@ -3428,7 +3436,15 @@ components:
34283436
- data
34293437
properties:
34303438
data:
3431-
$ref: '#/components/schemas/ProfileCreateManyInput'
3439+
oneOf:
3440+
- $ref: '#/components/schemas/ProfileCreateManyInput'
3441+
- type: array
3442+
items:
3443+
$ref: '#/components/schemas/ProfileCreateManyInput'
3444+
skipDuplicates:
3445+
type: boolean
3446+
description: Do not insert records with unique fields or ID fields that already
3447+
exist.
34323448
meta:
34333449
$ref: '#/components/schemas/_Meta'
34343450
ProfileFindUniqueArgs:
@@ -3608,7 +3624,15 @@ components:
36083624
- data
36093625
properties:
36103626
data:
3611-
$ref: '#/components/schemas/Post_ItemCreateManyInput'
3627+
oneOf:
3628+
- $ref: '#/components/schemas/Post_ItemCreateManyInput'
3629+
- type: array
3630+
items:
3631+
$ref: '#/components/schemas/Post_ItemCreateManyInput'
3632+
skipDuplicates:
3633+
type: boolean
3634+
description: Do not insert records with unique fields or ID fields that already
3635+
exist.
36123636
meta:
36133637
$ref: '#/components/schemas/_Meta'
36143638
Post_ItemFindUniqueArgs:

packages/plugins/openapi/tests/baseline/rpc-type-coverage-3.0.0.baseline.yaml

+9-1
Original file line numberDiff line numberDiff line change
@@ -2017,7 +2017,15 @@ components:
20172017
- data
20182018
properties:
20192019
data:
2020-
$ref: '#/components/schemas/FooCreateManyInput'
2020+
oneOf:
2021+
- $ref: '#/components/schemas/FooCreateManyInput'
2022+
- type: array
2023+
items:
2024+
$ref: '#/components/schemas/FooCreateManyInput'
2025+
skipDuplicates:
2026+
type: boolean
2027+
description: Do not insert records with unique fields or ID fields that already
2028+
exist.
20212029
meta:
20222030
$ref: '#/components/schemas/_Meta'
20232031
FooFindUniqueArgs:

packages/plugins/openapi/tests/baseline/rpc-type-coverage-3.1.0.baseline.yaml

+9-1
Original file line numberDiff line numberDiff line change
@@ -2049,7 +2049,15 @@ components:
20492049
- data
20502050
properties:
20512051
data:
2052-
$ref: '#/components/schemas/FooCreateManyInput'
2052+
oneOf:
2053+
- $ref: '#/components/schemas/FooCreateManyInput'
2054+
- type: array
2055+
items:
2056+
$ref: '#/components/schemas/FooCreateManyInput'
2057+
skipDuplicates:
2058+
type: boolean
2059+
description: Do not insert records with unique fields or ID fields that already
2060+
exist.
20532061
meta:
20542062
$ref: '#/components/schemas/_Meta'
20552063
FooFindUniqueArgs:

packages/schema/src/plugins/zod/transformer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ export const ${this.name}ObjectSchema: SchemaType = ${schema} as SchemaType;`;
485485
imports.push(
486486
`import { ${modelName}CreateManyInputObjectSchema } from '../objects/${modelName}CreateManyInput.schema'`
487487
);
488-
codeBody += `createMany: z.object({ data: z.union([${modelName}CreateManyInputObjectSchema, z.array(${modelName}CreateManyInputObjectSchema)]) }),`;
488+
codeBody += `createMany: z.object({ data: z.union([${modelName}CreateManyInputObjectSchema, z.array(${modelName}CreateManyInputObjectSchema)]), skipDuplicates: z.boolean().optional() }),`;
489489
operations.push(['createMany', origModelName]);
490490
}
491491

0 commit comments

Comments
 (0)