refactor(db): Complete Database Schema Redesign with Data Migration #197
Labels
No labels
good first issue
has-pr
help wanted
idea
priority
critical
priority
high
priority
low
priority
medium
status
blocked
status
in-progress
status
needs-review
status
ready
type
bug
type
docs
type
enhancement
type
feature
type
refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#198 feat: Import/Migration from thedotmack/claude-mem (Legacy System)
customable/claude-mem
#201 perf(db): Add missing database indexes for common query patterns
customable/claude-mem
#202 perf(api): Fix N+1 query problem in session list endpoint
customable/claude-mem
#207 feat(worker): Task deduplication to prevent queue overload
customable/claude-mem
Reference
customable/claude-mem#197
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zusammenfassung
Komplette Überarbeitung der Datenbank-Struktur mit sauberer Migration der bestehenden ~12.000 Observations und aller anderen Daten.
Aktuelle Probleme
Schema-Entity Drift (Kritisch)
Sessionrepo_path,is_worktree,branchin Entity definiert aber nicht in DBObservationrepo_pathin Entity definiert aber nicht in DBObservationconcept,source_filesin Entity aber nicht in DBrepositoriesPendingMessageSummaryfiles_read,files_edited,notesin DB aber nicht in EntityNaming-Inkonsistenzen
sdk_sessionssdk_unnötigsession_summariesproject_claudemdcwdvsworking_directoryuser_promptsFehlende Foreign Keys
documents.observation_id→observations.iddocuments.memory_session_id→sessionsproject_claudemd.memory_session_id→sessionsUnvollständige Migration
Migration
20260124000001_GitWorktreeSupportscheint nicht vollständig angewendet worden zu sein.Neue Schema-Struktur
1.
sessions(vorhersdk_sessions)2.
observations(überarbeitet)3.
summaries(vorhersession_summaries)4.
prompts(vorheruser_prompts)5.
tasks(vorhertask_queue)6.
claudemd(vorherproject_claudemd)7.
documents(überarbeitet)8.
repositories(neu)9.
pending_messages→ ENTFERNENMigration-Strategie
Phase 1: Backup
Phase 2: Entity-Klassen aktualisieren
Tabellennamen ändern:
Spalten umbenennen:
Neue Entity erstellen:
Repository.tsLegacy Entity entfernen:
PendingMessage.tsPhase 3: Migration mit MikroORM CLI generieren
Phase 4: Generierte Migration anpassen
Die automatisch generierte Migration muss um Daten-Migrationen erweitert werden:
Phase 5: Migration ausführen
Phase 6: Code-Anpassungen
cwd→workingDirectoryim gesamten CodeUserPromptRepository→PromptRepository)MikroORM CLI Referenz
npx mikro-orm migration:createnpx mikro-orm migration:create --name=NAMEnpx mikro-orm migration:create --blanknpx mikro-orm migration:upnpx mikro-orm migration:downnpx mikro-orm migration:listnpx mikro-orm migration:pendingnpx mikro-orm migration:checkAkzeptanzkriterien
Risiken
Geschätzter Aufwand
Abgeschlossen
Commits
510a3d6refactor(database): complete schema redesign (#197)9ceb76ffix(database): update raw SQL to use new table names7cdff9afeat(database): add MikroORM relations for FK relationships44885eefeat(database): add FTS5 full-text search and repositories tableÄnderungen
Tabellen umbenannt:
sdk_sessionssessionssession_summariessummariesuser_promptspromptstask_queuetasksproject_claudemdclaudemdSpalte umbenannt:
observations.cwd→observations.working_directoryEntfernt:
PendingMessageEntity und Tabelle (unbenutzt)Hinzugefügt:
observations_fts,documents_fts)RepositoryEntity und TabelleHinweis
Die alte Datenbank wurde archiviert (
~/.claude-mem/claude-mem.db.archive-20260125). Keine Daten-Migration durchgeführt - neue DB mit sauberem Schema erstellt.