aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/client/db/index.ts
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-12-31 14:19:22 +0900
committernsfisis <nsfisis@gmail.com>2025-12-31 14:19:22 +0900
commitb074a4901c630ee5c5f7dcff79fa6ff911a14ded (patch)
treea52b738974393e31678c85e37756004d1b547823 /src/client/db/index.ts
parent29caaa7aaf14a41dad3d345cd29b319fff6e1305 (diff)
downloadkioku-b074a4901c630ee5c5f7dcff79fa6ff911a14ded.tar.gz
kioku-b074a4901c630ee5c5f7dcff79fa6ff911a14ded.tar.zst
kioku-b074a4901c630ee5c5f7dcff79fa6ff911a14ded.zip
feat(schema): make note_id and is_reversed NOT NULL
All cards now require note association - legacy card support removed. This aligns with the note-based card architecture introduced in Phase 8. - Add database migration for NOT NULL constraints - Update client Dexie schema to version 3 - Remove LegacyCardItem component and legacy card handling - Update sync schemas and type definitions - Update all tests to use note-based cards 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/client/db/index.ts')
-rw-r--r--src/client/db/index.ts16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/client/db/index.ts b/src/client/db/index.ts
index 5318b17..53df476 100644
--- a/src/client/db/index.ts
+++ b/src/client/db/index.ts
@@ -122,8 +122,8 @@ export interface LocalNoteFieldValue {
export interface LocalCard {
id: string;
deckId: string;
- noteId: string | null;
- isReversed: boolean | null;
+ noteId: string;
+ isReversed: boolean;
front: string;
back: string;
@@ -241,6 +241,18 @@ export class KiokuDatabase extends Dexie {
}
});
});
+
+ // Version 3: noteId and isReversed are now required (NOT NULL)
+ // No migration needed as production has no legacy data without notes
+ this.version(3).stores({
+ decks: "id, userId, updatedAt",
+ cards: "id, deckId, noteId, updatedAt, due, state",
+ reviewLogs: "id, cardId, userId, reviewedAt",
+ noteTypes: "id, userId, updatedAt",
+ noteFieldTypes: "id, noteTypeId, updatedAt",
+ notes: "id, deckId, noteTypeId, updatedAt",
+ noteFieldValues: "id, noteId, noteFieldTypeId, updatedAt",
+ });
}
}