Datenbank-Reset aus dem Backend entfernen – E2E setzt über das Skript zurück #159

Open
opened 2026-10-30 19:46:59 +00:00 by claude · 1 comment
Collaborator

Befund

POST /api/database-resets (DatabaseResource) leert die Datenbank mit Flyway (clean, migrate) und legt danach den Admin an. Aufgerufen wird der Weg nur von E2E:

  • e2e/global-teardown.ts:16 am Ende jedes Laufs,
  • e2e/tests/helpers.ts:204 in einer Hilfsfunktion, die kein Test benutzt.

scripts/e2e-run.sh setzt die Staging-Datenbank ohnehin selbst zurück (Backup, DROP SCHEMA, am Ende Restore über SSH). Der Weg ist damit Produktivcode nur für Tests (CLAUDE.md) und läuft auch auf Prod mit: Ein Admin-Login genügt, um dort die ganze Datenbank zu leeren.

Entscheid (Olli, 30.10.2026, Service-Zuschnitt)

Der Weg fällt weg, mit ihm DatabaseResource und der im Zuschnitt zuerst geplante DatabaseResetService. Den Reset macht E2E über das Skript. Damit braucht Flyway im Anwendungscode keinen Ort mehr: ADR 0033 kennt keine Infrastruktur-Schicht, und der Reset hätte sonst eine Ausnahme gebraucht (Review des Zuschnitts, Befund 6).

Vor dem Bau klären

  • Warum setzt global-teardown.ts überhaupt zurück, wenn e2e-run.sh danach das Backup einspielt? Laut CLAUDE.md leert der Teardown-Reset bei einem direkten Lauf gegen die Dev-DB diese sogar.
  • Die Änderung an global-teardown.ts und helpers.ts braucht Ollis Ja (Tests nicht autonom ändern).
  • Hängt der StartupService danach nur noch am Programmstart? Laut Zuschnitt fällt er später weg, weil der Admin nur einmal angelegt werden muss.

Zuschnitt: docs/2026-10-28-service-zuschnitt.md, Zeile Betrieb.

## Befund `POST /api/database-resets` (`DatabaseResource`) leert die Datenbank mit Flyway (`clean`, `migrate`) und legt danach den Admin an. Aufgerufen wird der Weg nur von E2E: - `e2e/global-teardown.ts:16` am Ende jedes Laufs, - `e2e/tests/helpers.ts:204` in einer Hilfsfunktion, die kein Test benutzt. `scripts/e2e-run.sh` setzt die Staging-Datenbank ohnehin selbst zurück (Backup, `DROP SCHEMA`, am Ende Restore über SSH). Der Weg ist damit Produktivcode nur für Tests (CLAUDE.md) und läuft auch auf Prod mit: Ein Admin-Login genügt, um dort die ganze Datenbank zu leeren. ## Entscheid (Olli, 30.10.2026, Service-Zuschnitt) Der Weg fällt weg, mit ihm `DatabaseResource` und der im Zuschnitt zuerst geplante `DatabaseResetService`. Den Reset macht E2E über das Skript. Damit braucht Flyway im Anwendungscode keinen Ort mehr: ADR 0033 kennt keine Infrastruktur-Schicht, und der Reset hätte sonst eine Ausnahme gebraucht (Review des Zuschnitts, Befund 6). ## Vor dem Bau klären - Warum setzt `global-teardown.ts` überhaupt zurück, wenn `e2e-run.sh` danach das Backup einspielt? Laut CLAUDE.md leert der Teardown-Reset bei einem direkten Lauf gegen die Dev-DB diese sogar. - Die Änderung an `global-teardown.ts` und `helpers.ts` braucht Ollis Ja (Tests nicht autonom ändern). - Hängt der `StartupService` danach nur noch am Programmstart? Laut Zuschnitt fällt er später weg, weil der Admin nur einmal angelegt werden muss. Zuschnitt: `docs/2026-10-28-service-zuschnitt.md`, Zeile Betrieb.
Author
Collaborator

Begründung berichtigt (31.10.2026, zweiter Review des Zuschnitts). Der Satz unter „Entscheid“, Flyway brauche keinen Ort, weil ADR 0033 keine Infrastruktur-Schicht kenne, trägt nicht mehr: Seit dem 30.10. gibt es im Zuschnitt das Paket infrastructure/, dort hätte Flyway einen Ort.

Der Entscheid bleibt, aus den beiden Gründen unter „Befund“:

  • Der Weg ist Produktivcode nur für Tests (CLAUDE.md).
  • Er läuft auch auf Prod; ein Admin-Login genügt, um dort die ganze Datenbank zu leeren.

Die Fragen unter „Vor dem Bau klären“ gelten unverändert.

**Begründung berichtigt (31.10.2026, zweiter Review des Zuschnitts).** Der Satz unter „Entscheid“, Flyway brauche keinen Ort, weil ADR 0033 keine Infrastruktur-Schicht kenne, trägt nicht mehr: Seit dem 30.10. gibt es im Zuschnitt das Paket `infrastructure/`, dort hätte Flyway einen Ort. Der Entscheid bleibt, aus den beiden Gründen unter „Befund“: - Der Weg ist Produktivcode nur für Tests (CLAUDE.md). - Er läuft auch auf Prod; ein Admin-Login genügt, um dort die ganze Datenbank zu leeren. Die Fragen unter „Vor dem Bau klären“ gelten unverändert.
Sign in to join this conversation.
No description provided.