Datenbank-Migrationssystem einführen #4

Open
opened 2026-03-31 00:29:15 +02:00 by tobias · 0 comments
Owner

Beschreibung

Aktuell gibt es nur schema.sql als Initialschema. Sobald die App deployed ist und echte Daten enthält, können Schema-Änderungen nicht mehr über DROP+CREATE laufen.

Anforderungen

Migrationssystem

  • Nummerierte SQL-Dateien: migrations/001_initial.sql, 002_add_history.sql, etc.
  • Migrations-Tracking-Tabelle: _migrations (id, name, applied_at)
  • CLI-Befehl oder Auto-Run beim Server-Start
  • Vorwärts-Migrationen (Rückwärts optional, bei SQLite oft nicht praktikabel)

Initialzustand

  • 001_initial.sql = aktuelles schema.sql (Stammdaten + Haupttabellen)
  • Bestehende DB wird erkannt und als "bereits auf 001" markiert

Workflow

Server startet → prüft _migrations Tabelle → führt fehlende Migrationen aus → ready

Technische Optionen

  1. Eigenbau (20 Zeilen JS) — Dateien in migrations/ durchgehen, _migrations Tabelle prüfen
  2. better-sqlite3-migrations npm Paket
  3. umzug (Sequelize-basiert, overkill für SQLite)

Empfehlung: Eigenbau — einfach, transparent, keine Dependency.

Abhängigkeiten

  • Sollte VOR #5 und #6 implementiert werden (History + Soft-Delete brauchen Schema-Änderungen)
## Beschreibung Aktuell gibt es nur `schema.sql` als Initialschema. Sobald die App deployed ist und echte Daten enthält, können Schema-Änderungen nicht mehr über DROP+CREATE laufen. ## Anforderungen ### Migrationssystem - Nummerierte SQL-Dateien: `migrations/001_initial.sql`, `002_add_history.sql`, etc. - Migrations-Tracking-Tabelle: `_migrations (id, name, applied_at)` - CLI-Befehl oder Auto-Run beim Server-Start - Vorwärts-Migrationen (Rückwärts optional, bei SQLite oft nicht praktikabel) ### Initialzustand - `001_initial.sql` = aktuelles `schema.sql` (Stammdaten + Haupttabellen) - Bestehende DB wird erkannt und als "bereits auf 001" markiert ### Workflow ``` Server startet → prüft _migrations Tabelle → führt fehlende Migrationen aus → ready ``` ## Technische Optionen 1. **Eigenbau** (20 Zeilen JS) — Dateien in `migrations/` durchgehen, `_migrations` Tabelle prüfen 2. **better-sqlite3-migrations** npm Paket 3. **umzug** (Sequelize-basiert, overkill für SQLite) Empfehlung: Eigenbau — einfach, transparent, keine Dependency. ## Abhängigkeiten - Sollte VOR #5 und #6 implementiert werden (History + Soft-Delete brauchen Schema-Änderungen)
tobias added the
infra
backend
labels 2026-03-31 00:29:15 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: tobias/antragsideen-hagen#4
No description provided.