acacode / acacode/swagger-typescript-api

API client with discriminators is generated incorrectly

Abierto
#685 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
4.1k
Forks
436
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi, here's an example schema:

Example schema

```yaml
openapi: 3.0.1
info:
title: Example API
version: v1
paths:
/pet:
post:
summary: Create pet
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- payload
discriminator:
propertyName: type
mapping:
CAT: '#/components/schemas/cat'
DOG: '#/components/schemas/dog'
properties:
type:
$ref: '#/components/schemas/pet_kind'
payload:
type: object
oneOf:
- $ref: '#/components/schemas/cat'
- $ref: '#/components/schemas/dog'
responses:
'204':
description: all good!

components:
schemas:
cat:
type: object
properties:
name:
type: string
breed:
type: string
dog:
type: object
properties:
name:
type: string
breed:
type: string
pet_kind:
type: string
description: type of animal
enum: [CAT, DOG]
```

it's a pretty simple schema with discriminator on the property `type` that determines the `payload` object. There's an enumb called `pet_kind` which has two options `CAT` and `DOG`.

## Expected behaviour

It's expected, that the `pet_kind` enum would be generated as `PetKind` in the data definition section and would be referenced in the API client.

## Actual begaviour

The `pet_kind` enum is generated correctly in the data definition secion:

```ts
/** type of animal */
export enum PetKind {
CAT = "CAT",
DOG = "DOG",
}
```

but is *not* referenced correctly in the API client, it is referenced as *`pet_kind`* which gives runtime and type errors:

```ts
postPet: (
data: {
data: BaseNull & (BaseNullTypeMapping | BaseNullTypeMapping);
},
params: RequestParams = {},
) =>
this.request({
path: `/pet`,
method: "POST",
body: data,
type: ContentType.Json,
...params,
}),
};
}

```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.