Soft-Delete mit Papierkorb #6

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

Beschreibung

Einträge sollen nicht endgültig gelöscht, sondern in einen Papierkorb verschoben werden können.

Anforderungen

Datenmodell

-- Migration: ALTER TABLE antraege ADD COLUMN geloescht_am DATETIME DEFAULT NULL;
-- Migration: ALTER TABLE antraege ADD COLUMN geloescht_von TEXT DEFAULT NULL;

geloescht_am IS NULL = aktiv, geloescht_am IS NOT NULL = im Papierkorb.

Backend

  • DELETE /api/antraege/:id → setzt geloescht_am + geloescht_von statt echtem DELETE
  • GET /api/antraege → filtert standardmäßig WHERE geloescht_am IS NULL
  • GET /api/antraege?papierkorb=true → zeigt nur gelöschte
  • POST /api/antraege/:id/wiederherstellen → setzt geloescht_am = NULL
  • DELETE /api/antraege/:id/endgueltig → echtes DELETE (optional, nur Admin?)

Frontend

  • Löschen-Button → Bestätigungsdialog → Soft-Delete
  • Papierkorb-Ansicht (eigener Tab oder Filter)
  • Wiederherstellen-Button im Papierkorb
  • Optional: Auto-Bereinigung nach X Tagen

Abhängigkeiten

  • #4 (Migrationssystem) — ALTER TABLE braucht Migration
  • #5 (History) — Löschung sollte im History-Log erscheinen
## Beschreibung Einträge sollen nicht endgültig gelöscht, sondern in einen Papierkorb verschoben werden können. ## Anforderungen ### Datenmodell ```sql -- Migration: ALTER TABLE antraege ADD COLUMN geloescht_am DATETIME DEFAULT NULL; -- Migration: ALTER TABLE antraege ADD COLUMN geloescht_von TEXT DEFAULT NULL; ``` `geloescht_am IS NULL` = aktiv, `geloescht_am IS NOT NULL` = im Papierkorb. ### Backend - `DELETE /api/antraege/:id` → setzt `geloescht_am` + `geloescht_von` statt echtem DELETE - `GET /api/antraege` → filtert standardmäßig `WHERE geloescht_am IS NULL` - `GET /api/antraege?papierkorb=true` → zeigt nur gelöschte - `POST /api/antraege/:id/wiederherstellen` → setzt `geloescht_am = NULL` - `DELETE /api/antraege/:id/endgueltig` → echtes DELETE (optional, nur Admin?) ### Frontend - Löschen-Button → Bestätigungsdialog → Soft-Delete - Papierkorb-Ansicht (eigener Tab oder Filter) - Wiederherstellen-Button im Papierkorb - Optional: Auto-Bereinigung nach X Tagen ## Abhängigkeiten - #4 (Migrationssystem) — ALTER TABLE braucht Migration - #5 (History) — Löschung sollte im History-Log erscheinen
tobias added the
frontend
feature
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#6
No description provided.