Modifier le modèle de données : $ARGUMENTS
Les données stockées résident dans des fichiers JSON qui existent déjà sur les machines des coéquipiers et sur le serveur, chaque modification doit donc lire les anciens fichiers sans les casser.
Étapes
- Lire
src/lib/links/schema.ts,src/lib/links/store.tsetdata/seed.json. - Décider si la modification est additive (nouveau champ optionnel avec une valeur par défaut) ou cassante
(renommage, suppression, nouveau champ obligatoire, changement de type).
- Additive : ajouter le champ avec
.optional()ou.default(...)àlinkSchema, et àlinkInputSchemasi les utilisateurs peuvent le définir. Pas d’incrémentation de version. - Cassante : incrémenter le littéral
versiondu fichier de données (ex.1→2). Conserver l’ancien schéma sousdataFileV1Schema, et ajouter une fonctionupgradeV1toV2(data)dansstore.tsqueload()applique lorsqu’il lit un fichier v1. Ne jamais réécrire les fichiers à la lecture ; la prochainesave()écrit en v2.
- Additive : ajouter le champ avec
- Mettre à jour
data/seed.jsonvers la nouvelle forme. - Mettre à jour l’interface utilisateur uniquement si la tâche le demande.
- Tests dans
src/lib/links/store.test.ts:- Le nouveau champ fait un aller-retour via
createLinketlistLinks. - Pour les changements cassants : écrire un fichier v1 dans le chemin de données temporaire et vérifier que
listLinks()renvoie des liens mis à niveau, et qu’uncreateLinksuivant sauvegarde un fichier v2.
- Le nouveau champ fait un aller-retour via
- Exécuter
npm run checketnpm run build. - Dans votre résumé, indiquer si la modification était additive ou cassante, et ce qui se passe pour les fichiers de données existants.