bollwerk/Anforderungen/design/db-migration/requirements.md
Jens Reinemann 1df2d1cff5 refactor: manuelle DB-Migrationen durch Room AutoMigration ersetzen
- DB-Version auf 6 hochgezaehlt (Clean-Slate, keine Rueckwaertskompatibilitaet)
- Alle manuellen Migrationen (v1-v5) aus Migrations.kt entfernt
- DatabaseModule: addMigrations() durch fallbackToDestructiveMigration() ersetzt
- migration-guide.md: AutoMigration-Workflow dokumentiert
- Instrumentierte Tests: alte Migrationstests durch frische DB-Tests ersetzt
- Schema 6.json exportiert

Closes #89
2026-05-17 11:43:27 +02:00

1.2 KiB
Raw Blame History

Technology Requirements DB-Migrationsstrategie

Date: 2026-05-17 Author: Krisenvorrat-Projekt

Must-Have (eliminators)

  • Datenerhaltung bei Schema-Änderungen (kein Datenverlust bei App-Updates)
  • Kompatibel mit Room 2.6.1 (aktuell eingesetzte Version)
  • Testbarkeit mit Room MigrationTestHelper
  • Rückwärtskompatibilität mit bestehenden 4 manuellen Migrationen (V1→V5)
  • Funktioniert mit minSdk 26 (SQLite 3.18 kein RENAME COLUMN, kein DROP COLUMN)

Should-Have (weighted positives)

  • Geringer Boilerplate für einfache Schema-Änderungen (ADD COLUMN, neue Tabelle)
  • Compile-time Schema-Validierung
  • Klare Entwickler-Checkliste (wann welcher Ansatz)
  • Fehlervermeidung (vergessene Migration → Build-Fehler statt Runtime-Crash)

Nice-to-Have (bonus)

  • Automatische Schema-Diff-Generierung
  • Minimaler manueller SQL-Aufwand für Standardfälle

Constraints

  • Plattform: Android (minSdk 26, targetSdk aktuell)
  • Room 2.6.1 mit KSP
  • Kotlin, Jetpack Compose
  • SQLite 3.18 (API 26): ALTER TABLE RENAME COLUMN erst ab 3.25 (API 29), DROP COLUMN erst ab 3.35 (API 34)
  • Bestehende manuelle Migrationen (V1→V2, V2→V3, V3→V4, V4→V5) müssen unverändert funktionieren