データモデルの変更: $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を実行してください。- サマリーで、変更が追加的か破壊的か、および既存のデータファイルに何が起こるかを記述してください。