Closed inetol closed 10 months ago
LGTM, aunque siempre va a haber retrocompatibilidad, tendrá un sistema de versiones (implementado en Caddy, con múltiples instancias de las diferentes versiones (tipo jspaste.eu/v1/documents, y la ruta default /documents también será la última versión
implementado, ya existe jspaste.eu/v1/documents
hablando de la spec, creo que estaría bueno un generador de OpenAPI (Por lo que veo Elysia lo soporta) Algo bastante interesante que encontré también es esto: https://elysiajs.com/eden/overview.html
Interesante, por soportar soporta hasta WS lo que sería mucho mejor que hacer requests HTTP
LGTM, aunque siempre va a haber retrocompatibilidad, tendrá un sistema de versiones (implementado en Caddy, con múltiples instancias de las diferentes versiones (tipo jspaste.eu/v1/documents, y la ruta default /documents también será la última versión
Como harás entonces distintas versiones de los documentos, es decir, si hay un cambio en /documents (algun fichero) que tendrás varios ficheros con las versiones correspondientes o como que no lo he entendido
LGTM, aunque siempre va a haber retrocompatibilidad, tendrá un sistema de versiones (implementado en Caddy, con múltiples instancias de las diferentes versiones (tipo jspaste.eu/v1/documents, y la ruta default /documents también será la última versión
Como harás entonces distintas versiones de los documentos, es decir, si hay un cambio en /documents (algun fichero) que tendrás varios ficheros con las versiones correspondientes o como que no lo he entendido
tendré varias carpetas y múltiples servidores web, por ejemplo uno para v1, y otro para v2 junto con latest (mismo servidor), lo único malo es que entre cada versión se perderán los ficheros que se crearon en versiones anteriores, pero todavía no sé si será un problema porque no sé si hacer que los ficheros sean temporales y se borren cuando pase x tiempo o si hacerlos "permanentes"
O si no tener una carpeta de datos compartida e intentar "migrar" los documentos a las ultimas versiones (sin romper retrocompatibilidad) o simplemente desactivar las nuevas features en documentos que sean de una versión anterior
Pero y porque no tener en "src/routes/\<vX>/documents/" directamente con sus cosas separadas entre sí? Lo de versiones no digo de por cada commit ir creando versiones, sino con cambios importantes que rompan la compatibilidad, si no míralo como la gateway de Discord que hace lo mismo.
ya, claro, las versiones serán solo "major releases". Se podría hacer el versionado dentro del propio servidor sí, pero el problema de los ficheros guardados sigue (por ejemplo, imagina que en un publish del v1 se agrega un "secret" para borrar el fichero (y este se guardará dentro del propio fichero o en uno de metadatos con la misma id), y en la v2 se renombra a token, por poner un ejemplo, ya los ficheros de la v1 no servirían a no ser que se "migren" automáticamente yo lo que tenía pensado era crear ramas (tipo v1 y v2) (no creo que vaya a haber más versiones) y simplemente instanciar dos servidores webs en diferente puerto uno a la escucha de v1/documents y otro a la escucha de v2/documents y /documents
Que las nuevas versiones añadan alguna especie de retrocompatibilidad, o crear el "Backend del Backend" que se encargue del manejo del almacenamiento con sus propios métodos (ignora todo eso último), solo como idea. Lo de tener varios servidores corriendo con cada versión me parece muy ineficiente y seguro que hay formas más simples de manejar este problema.
tienes razón, lo voy a hacer dentro de routes entonces, y sobre lo otro intentar no romper la retrocompatibilidad y listo, es decir que solo se añadan cosas nuevas y opcionales partiendo de v1
bueno, si se va a hacer de la forma "añadir cosas nuevas y opcionales partiendo de v1" las versiones no serian redundantes? lo que funciona en v1 funcionará igual en v2 solo que si no actualizas la lib faltarán features, si se va a hacer así simplemente veo las versiones como tema de spec mas que otra cosa
bueno, si se va a hacer de la forma "añadir cosas nuevas y opcionales partiendo de v1" las versiones no serian redundantes? lo que funciona en v1 funcionará igual en v2 solo que si no actualizas la lib faltarán features, si se va a hacer así simplemente veo las versiones como tema de spec mas que otra cosa
La lib usará la última versión que haya disponible, si hay una v2 disponible en el backend y la v1 esta deprecated el mantenedor de la librería tendrá que actualizar todo lo que haga falta desde su lado para que funcione correctamente con el v2, y si, la redundancia es necesaria, se usará algún import, symlink, ruta del Caddy ya se verá que es lo mejor.
Algo que era un horror con el JSPaste antiguo era implementar cambios en la librería a la par de la API, y no me gustaría tenerlo aquí esa arquitectura.
Propongo establecer un sistema de versiones (/v1/...), por si hubiera cambios que rompiesen las librerías pues se usa una nueva iteración de la API, se sube la versión y todo OK hasta que las librerías (o el frontend) alcancen ese hito actualizando sus rutas. Eso sí, al hacer el sistema de versiones que se establezca una spec detallada.