데이터 모델 변경: $ARGUMENTS
저장된 데이터는 동료의 로컬 환경과 서버에 이미 존재하는 JSON 파일로 관리됩니다. 따라서 모든 변경은 기존 파일을 깨뜨리지 않으면서 읽을 수 있어야 합니다.
단계
src/lib/links/schema.ts,src/lib/links/store.ts,data/seed.json파일을 읽습니다.- 변경이 추가적(새로운 선택적 필드와 기본값)인지 파괴적(이름 변경, 제거, 새로운 필수 필드, 타입 변경)인지 결정합니다.
- 추가적:
linkSchema에.optional()또는.default(...)를 사용하여 필드를 추가하고, 사용자가 설정할 수 있는 경우linkInputSchema에도 추가합니다. 버전을 올리지 않습니다. - 파괴적: 데이터 파일의
version리터럴을 올립니다 (예:1→2). 이전 스키마를dataFileV1Schema로 유지하고,store.ts에upgradeV1toV2(data)함수를 추가합니다. 이 함수는load()가 v1 파일을 읽을 때 적용되며, 읽기 시점에 파일을 다시 쓰지 않고 다음save()가 v2 형식으로 저장합니다.
- 추가적:
data/seed.json을 새로운 형태로 업데이트합니다.- 작업에서 요청하는 경우에만 UI를 업데이트합니다.
src/lib/links/store.test.ts에 테스트를 추가합니다:- 새 필드가
createLink와listLinks를 통해 정상적으로 저장 및 조회되는지 확인합니다. - 파괴적 변경의 경우: v1 파일을 임시 데이터 경로에 작성하고
listLinks()가 업그레이드된 링크를 반환하는지 확인하며, 이후createLink가 v2 파일을 저장하는지 확인합니다.
- 새 필드가
npm run check와npm run build를 실행합니다.- 요약에서 변경이 추가적인지 파괴적인지, 그리고 기존 데이터 파일에 어떤 영향이 있는지 명시합니다.