Cambiar el modelo de datos: $ARGUMENTS
Los datos almacenados residen en archivos JSON que ya existen en las máquinas de los compañeros y en el servidor, por lo que cada cambio debe leer archivos antiguos sin romper nada.
Pasos
- Lee
src/lib/links/schema.ts,src/lib/links/store.tsydata/seed.json. - Decide si el cambio es aditivo (nuevo campo opcional con un valor por defecto) o disruptivo
(renombrar, eliminar, nuevo campo obligatorio, cambio de tipo).
- Aditivo: agrega el campo con
.optional()o.default(...)alinkSchema, y también alinkInputSchemasi los usuarios pueden establecerlo. Sin incremento de versión. - Disruptivo: incrementa el literal
versiondel archivo de datos (por ejemplo,1→2). Mantén el esquema antiguo comodataFileV1Schema, y añade una funciónupgradeV1toV2(data)enstore.tsqueload()aplique cuando lea un archivo v1. Nunca sobrescribas archivos al leer; el siguientesave()escribe v2.
- Aditivo: agrega el campo con
- Actualiza
data/seed.jsona la nueva forma. - Actualiza la interfaz de usuario solo si la tarea lo solicita.
- Pruebas en
src/lib/links/store.test.ts:- El nuevo campo viaja de ida y vuelta a través de
createLinkylistLinks. - Para cambios disruptivos: escribe un archivo v1 en la ruta de datos temporales y verifica que
listLinks()devuelva enlaces actualizados, y que uncreateLinkposterior guarde un archivo v2.
- El nuevo campo viaja de ida y vuelta a través de
- Ejecuta
npm run checkynpm run build. - En tu resumen, indica si el cambio fue aditivo o disruptivo, y qué sucede con los archivos de datos existentes.