Altere o modelo de dados: $ARGUMENTS
Os dados armazenados residem em arquivos JSON que já existem nas máquinas dos colegas e no servidor, portanto, toda alteração deve ler arquivos antigos sem quebrá-los.
Etapas
- Leia
src/lib/links/schema.ts,src/lib/links/store.tsedata/seed.json. - Decida se a mudança é aditiva (novo campo opcional com valor padrão) ou crítica
(renomear, remover, novo campo obrigatório, alteração de tipo).
- Aditiva: adicione o campo com
.optional()ou.default(...)aolinkSchema, e também aolinkInputSchemase os usuários puderem defini-lo. Sem incremento de versão. - Crítica: incremente o literal
versiondo arquivo de dados (ex.:1→2). Mantenha o esquema antigo comodataFileV1Schemae adicione uma funçãoupgradeV1toV2(data)emstore.tsqueload()aplica ao ler um arquivo v1. Nunca reescreva arquivos durante a leitura; o próximosave()escreve v2.
- Aditiva: adicione o campo com
- Atualize
data/seed.jsonpara o novo formato. - Atualize a interface somente se a tarefa exigir.
- Testes em
src/lib/links/store.test.ts:- O novo campo passa por
createLinkelistLinkssem perdas. - Para mudanças críticas: escreva um arquivo v1 no caminho de dados temporário e verifique se
listLinks()retorna links atualizados, e que umcreateLinksubsequente salva um arquivo v2.
- O novo campo passa por
- Execute
npm run checkenpm run build. - Em seu resumo, indique se a mudança foi aditiva ou crítica e o que acontece com os arquivos de dados existentes.