Kontoloeschung laesst eigene Masterpacklisten und Listen-Sortiereintraege verwaist zurueck #209

Closed
opened 2026-09-27 23:07:36 +02:00 by lena · 2 comments
Collaborator

Problem

Beim Loeschen eines Kontos (Selbstloeschung und Admin-Loeschung aus #206, beide ueber EraseUserAccountCommandHandler) werden eigene Todo- und Einkaufslisten explizit geloescht, eigene Masterpacklisten aber nicht. Die DB entfernt nur die Mitgliedschaftszeile (MasterPackingListToUserEntity), die Liste selbst bleibt als verwaiste, unerreichbare Zeile samt Items/Labels/Kommentaren liegen. Andere Mitglieder einer geteilten Masterpackliste behalten sie dagegen, obwohl sie beim normalen Loeschen durch den Eigentuemer verschwinden wuerde.

Dazu kommt ein verwandter Rest: UserListOrderEntity hat keinen FK auf die Liste (#149). Delete*ListCommandHandler raeumen deshalb per UserListOrderAppender.RemoveAllAsync die Sortier-Eintraege aller Mitglieder ab, die Kontoloeschung tut das fuer keinen Listentyp. Andere Mitglieder behalten dadurch tote Sortier-Eintraege fuer die mitgeloeschten Listen.

Akzeptanzkriterien

  • Eigene Masterpacklisten (Role == Owner) werden bei der Kontoloeschung mitgeloescht (Items, Labels, Kommentare, Einladungen, Aktivitaet per DB-Cascade).
  • Masterpacklisten, in denen der Nutzer nur Mitglied ist, bleiben erhalten; nur seine Mitgliedschaft wird entfernt.
  • Die Sortier-Eintraege (UserListOrderEntity) aller Mitglieder fuer die mitgeloeschten Listen werden entfernt: Todo, Einkauf, Masterpack sowie die per Cascade mitgeloeschten Speisekammern der eigenen Einkaufslisten.
  • Broadcast wie beim normalen Loeschen: Masterpacklisten haben keinen Change-Broadcast-Kanal (auch DeleteMasterPackingListCommandHandler sendet keinen), also kein neuer Kanal.
  • Tests in EraseUserAccountCommandHandlerTests.
## Problem Beim Loeschen eines Kontos (Selbstloeschung und Admin-Loeschung aus #206, beide ueber `EraseUserAccountCommandHandler`) werden eigene Todo- und Einkaufslisten explizit geloescht, eigene **Masterpacklisten aber nicht**. Die DB entfernt nur die Mitgliedschaftszeile (`MasterPackingListToUserEntity`), die Liste selbst bleibt als verwaiste, unerreichbare Zeile samt Items/Labels/Kommentaren liegen. Andere Mitglieder einer geteilten Masterpackliste behalten sie dagegen, obwohl sie beim normalen Loeschen durch den Eigentuemer verschwinden wuerde. Dazu kommt ein verwandter Rest: `UserListOrderEntity` hat keinen FK auf die Liste (#149). `Delete*ListCommandHandler` raeumen deshalb per `UserListOrderAppender.RemoveAllAsync` die Sortier-Eintraege aller Mitglieder ab, die Kontoloeschung tut das fuer keinen Listentyp. Andere Mitglieder behalten dadurch tote Sortier-Eintraege fuer die mitgeloeschten Listen. ## Akzeptanzkriterien - [ ] Eigene Masterpacklisten (Role == Owner) werden bei der Kontoloeschung mitgeloescht (Items, Labels, Kommentare, Einladungen, Aktivitaet per DB-Cascade). - [ ] Masterpacklisten, in denen der Nutzer nur Mitglied ist, bleiben erhalten; nur seine Mitgliedschaft wird entfernt. - [ ] Die Sortier-Eintraege (`UserListOrderEntity`) aller Mitglieder fuer die mitgeloeschten Listen werden entfernt: Todo, Einkauf, Masterpack sowie die per Cascade mitgeloeschten Speisekammern der eigenen Einkaufslisten. - [ ] Broadcast wie beim normalen Loeschen: Masterpacklisten haben keinen Change-Broadcast-Kanal (auch `DeleteMasterPackingListCommandHandler` sendet keinen), also kein neuer Kanal. - [ ] Tests in `EraseUserAccountCommandHandlerTests`.
lena self-assigned this 2026-09-27 23:07:37 +02:00
Author
Collaborator

Start: Folge-Fund aus #206, direkt beauftragt. Fix im gemeinsamen EraseUserAccountCommandHandler.

Start: Folge-Fund aus #206, direkt beauftragt. Fix im gemeinsamen EraseUserAccountCommandHandler.
Author
Collaborator

Behoben in 30172ed9

Umfang

  • EraseUserAccountCommandHandler (gemeinsam genutzt von Selbst- und Admin-Loeschung) sucht jetzt auch eigene Masterpacklisten (Role == Owner) und loescht sie. Items, Labels, Kommentare, Einladungen und Aktivitaet folgen per DB-Cascade.
  • Masterpacklisten, in denen der Nutzer nur Mitglied ist, bleiben erhalten; nur seine Mitgliedschaft verschwindet.
  • Kein Broadcast: Masterpacklisten haben keinen Change-Kanal, auch DeleteMasterPackingListCommandHandler sendet keinen. Andere Mitglieder sehen die Aenderung beim naechsten Laden, genau wie beim normalen Loeschen durch den Eigentuemer.
  • Zusaetzlich werden die Sortier-Eintraege (UserListOrderEntity) aller Mitglieder fuer jede mitgeloeschte Liste entfernt: Todo, Einkauf, Masterpack und die Speisekammern, die per Cascade mit einer eigenen Einkaufsliste verschwinden. Diese IDs werden vor dem Loeschen ermittelt. Das entspricht dem, was die Delete*ListCommandHandler seit #149 tun. Die eigenen Sortier-Eintraege des Nutzers fielen schon vorher per FK-Cascade weg.

Tests (EraseUserAccountCommandHandlerTests)

  • Eigene Masterpackliste samt Items wird geloescht.
  • Fremde Masterpackliste bleibt, nur die Mitgliedschaft ist weg.
  • Sortier-Eintraege eines anderen Mitglieds fuer alle geloeschten Listen (inkl. Speisekammer) werden entfernt, der Eintrag fuer eine ueberlebende Liste bleibt.
  • Volle Suite gruen: 1024 + 63 + 119.
## Behoben in 30172ed9 **Umfang** - `EraseUserAccountCommandHandler` (gemeinsam genutzt von Selbst- und Admin-Loeschung) sucht jetzt auch eigene Masterpacklisten (Role == Owner) und loescht sie. Items, Labels, Kommentare, Einladungen und Aktivitaet folgen per DB-Cascade. - Masterpacklisten, in denen der Nutzer nur Mitglied ist, bleiben erhalten; nur seine Mitgliedschaft verschwindet. - Kein Broadcast: Masterpacklisten haben keinen Change-Kanal, auch `DeleteMasterPackingListCommandHandler` sendet keinen. Andere Mitglieder sehen die Aenderung beim naechsten Laden, genau wie beim normalen Loeschen durch den Eigentuemer. - Zusaetzlich werden die Sortier-Eintraege (`UserListOrderEntity`) aller Mitglieder fuer jede mitgeloeschte Liste entfernt: Todo, Einkauf, Masterpack und die Speisekammern, die per Cascade mit einer eigenen Einkaufsliste verschwinden. Diese IDs werden vor dem Loeschen ermittelt. Das entspricht dem, was die Delete*ListCommandHandler seit #149 tun. Die eigenen Sortier-Eintraege des Nutzers fielen schon vorher per FK-Cascade weg. **Tests** (`EraseUserAccountCommandHandlerTests`) - Eigene Masterpackliste samt Items wird geloescht. - Fremde Masterpackliste bleibt, nur die Mitgliedschaft ist weg. - Sortier-Eintraege eines anderen Mitglieds fuer alle geloeschten Listen (inkl. Speisekammer) werden entfernt, der Eintrag fuer eine ueberlebende Liste bleibt. - Volle Suite gruen: 1024 + 63 + 119.
lena closed this issue 2026-09-27 23:16:29 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
robert/todo#209
No description provided.