- 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
32 lines
1.2 KiB
Markdown
32 lines
1.2 KiB
Markdown
# 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
|