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

32 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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