ita-directory
ita-directory copied to clipboard
Autogenerate Swagger API from Zod Schema - Single Route POC
Autogenerate swagger openApi with Zod using: https://github.com/asteasolutions/zod-to-openapi
Divido este issue en dos por su complejidad:
- Modifico el actual para desarrollar el proof of concept / demo sobre una sola ruta
- Creo otro issue a continuación de este para la aplicación global (a enlazar cuando lo haya creado)
Tareas para cerrar el issue:
- [ ] Crear un Swagger file a partir de Zod files usando zod-to-openapi
- [ ] Usar la configuración de compatibilidad con swagger files de express-jsdoc-swagger para que recupere el swagger file generado a partir de los Zod files antes de generar mas openapi code a partir de los comentarios jsdoc de las rutas
- [ ] Eliminar la declaración de un objeto de jsdoc que se use en el mínimo número de rutas para hacer la demo, sustituir nombres en su uso dentro del jsdoc (en caso que el schema exportado de Zod tenga alguna diferencia), lanzar el backend y comprobar que el SwaggerUI generado por el backend encuentra la definición del schema
- [ ] Crear issue de aplicación global y enlazar este issue en su descripción
- [ ] Asociar este issue y el siguiente a un proyecto de tech-debt
Problemas, soluciones:
- El package zod-to-openapi depende del package zod, pero la versión latest de zod-to-openapi usa una versión de zod posterior a la del proyecto $\to$ En vez de tener dos instalaciones de zod, he optado por fijar la versión de zod-to-openapi a la 1.4.1 (anterior) para hacer coincidir su dependencia de zod con la que ya está instalada en el proyecto
- zod-to-openapi permite entrar toda la información para generar el swagger file, no solo la definición de componentes y esquemas, sino también rutas con sus parametros, descripciones, respuestas, etc. $\to$ Se podria crear un issue para hacer la migración completa de jsdoc a zod-to-openapi $\to$ Por ahora, exporto solo las definiciones de schemas para resolver la doble declaración de estructuras de datos