Delete the users row once the operator has moved out of it
Decided: whoever is in operators has no business in users. A row left behind is the same mixing the separation exists to end, only smaller. The one case that deletes nothing is a row with a customer, a seat or an order on it. That would mean the same person is operator and paying customer, and a silent delete would take billing data with it — so the migration stops and names the address instead. Neither existing account is in that state. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>feat/mailboxes
parent
ce970a5fac
commit
edaceb9597
|
|
@ -195,12 +195,21 @@ eingebaut, und **protokollierbar** — wer wann wen angesehen hat.
|
|||
- Die Migration **übernimmt** jedes Konto mit Operator-Rolle nach `operators`,
|
||||
samt Passwort-Hash und 2FA-Feldern. Dieselben Zugangsdaten wie bisher — kein
|
||||
Passwortwechsel, kein Aussperren beim Live-Update.
|
||||
- Danach wird die `users`-Zeile **nur dann** gelöscht, wenn kein Kunde, keine
|
||||
Plätze und keine Bestellungen daran hängen. Andernfalls bleibt sie stehen,
|
||||
verliert aber ihre Rollen, und die Migration **meldet**, was sie stehen ließ.
|
||||
- Rückweg: die Migration ist `down()`-fähig, solange die `users`-Zeilen noch da
|
||||
sind. Nach dem Löschen verwaister Zeilen ist nur noch der Weg über
|
||||
`clupilot:create-operator` offen — das steht in der Migration als Kommentar.
|
||||
- **Die `users`-Zeile wird danach gelöscht.** Wer in `operators` steht, hat in
|
||||
`users` nichts mehr verloren — das ist der Sinn der Trennung, und eine
|
||||
zurückgelassene Zeile wäre genau die Vermischung in klein. Entschieden am
|
||||
2026-07-27.
|
||||
- **Eine Ausnahme, und sie löscht nichts:** hängt an der Zeile ein Kunde, ein
|
||||
Platz oder eine Bestellung, **bricht die Migration ab** und nennt die
|
||||
betroffene Adresse. Dieser Zustand hieße, dass dieselbe Person Betreiber *und*
|
||||
zahlender Kunde ist — dann ist nicht die Zeile das Problem, sondern die
|
||||
Annahme, und ein stilles `delete` nähme Abrechnungsdaten mit. Geprüft: **keines
|
||||
der beiden Bestandskonten ist in diesem Zustand**, der Abbruch tritt heute
|
||||
also nicht ein.
|
||||
- Rückweg: `down()` legt die `users`-Zeilen aus `operators` wieder an — Hash und
|
||||
2FA sind ja übernommen, nicht übersetzt. Verloren geht dabei nur, was seit dem
|
||||
Umzug am Operator entstanden ist (`last_login_at`). Steht als Kommentar in der
|
||||
Migration.
|
||||
|
||||
### Kleine Punkte, im selben Zug
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue