Generar contratos desde Swagger

Descripción del cliente generate-dto

Para la facilidad de generación de contratos se ha visto la necesidad de escribir un pequeño CLI en node ubicado en packages/generate-dto

josenapa@MacBook-Pro-de-Jose-oxxo app % yarn run generate-dto Usage: api-core <option> Options: --version Show version number [boolean] --all Generate All DTOs [boolean] --service-name Generate specific service DTO [string] --env Services Environment [string] [required] --output DTOs Output dir [string] [required] --help Show help [boolean]

Párametros que recibe el comando

Parametro

Descripción

required

Parametro

Descripción

required

all

Permite generar todos los contratos de todos los servicios definidos en el archivo swagger-doc-list.json

No

service-name

Permite generar todos los contratos de un solo servicio, importante que el servicio esté registrado dentro del archivo swagger-doc-list.json

No

env

Define el environment desde donde se va extraer la información de los contratos, puede ser dev o qa

Si

output

Define el directorio donde se van a escribir los archivos .d.ts generados de los contratos

Si

Generación de contratos

Para la generación de contratos, se han incluido 4 scripts dentro del package.json

"api:generate": "generate-dto --env=dev --output=./src/api/models --all && prettier --write src/api/models", "api:generate:qa": "generate-dto --env=qa --output=./src/api/models --all && prettier --write src/api/models", "api:generate:single": "generate-dto --env=dev --output=./src/api/models $0 && prettier --write src/api/models", "api:generate:single:qa": "generate-dto --env=qa --output=./src/api/models $0 && prettier --write src/api/models",

Comando

Descripción

Comando

Descripción

api:generate

este comando genera por defecto todos los contratos de todos los servicios publicados en dev

api:generate:qa

este comando genera por defecto todos los contratos de todos los servicios publicados en qa

api:generate:single

este comando genera por defecto todos los contratos de un servicio en especifico de dev

api:generate:single:qa

este contrato genera por defecto todos los contratos de un servicio en especifico de qa

Ejemplos

  • Generar todos los contratos de dev

    yarn run api:generate

     

  • Generar todos los contratos de qa

    yarn run api:generate:qa

     

  • Generar todos los contratos de un servicio especifico de dev

    yarn run api:generate:single --service-name=transaction-service

     

  • Generar todos los contratos de un servicio especifico de QA

    yarn run api:generate:single:qa --service-name=transaction-service


Agregar nuevos servicios para generar contratos

Cuando backend agrega un nuevo bloque de servicios, debemos registrarlo en el archivo swagger-doc-list.json ubicado en packages/generate-dto/src/data. Posterior al registro del nuevo servicio, se deben ejecutar los comandos para generar los DTOs.