acacode / acacode/swagger-typescript-api

Omit readonly properties from PATCH requestContent

Abierto
#468 4 comentarios 2 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
TypeScript
Estrellas
4.1k
Forks
436
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

If a schema is referenced as the requestContent to an API, the generated RequestBody should omit readonly properties.

Given a user:

```ts
export interface User {
readonly id: number
name: string
readonly email: string
}
```

When this type is referenced to be the input to a PATCH request, the input argument should omit readonly properties.

It should be possible to do some Typescript magic to strip readonly properties, like mentioned in https://stackoverflow.com/a/49579497/2240706.

```ts
type IfEquals =
(() => T extends X ? 1 : 2) extends
(() => T extends Y ? 1 : 2) ? A : B;

type WritableKeys = {
[P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>
}[keyof T];

type ReadonlyKeys = {
[P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, never, P>
}[keyof T];

type OmitReadonly = Pick>;
```

It would then be a case of updating the generated code to declare the argument as `OmitReadonly`

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.