Hierarchische Gruppen mit 6 Ebenen – die komplexeste Funktion des Projekts
Es gibt Funktionen, die auf dem Papier einfach erscheinen. „Fügen Sie Gruppen hinzu“ – das klingt harmlos. Dann fangen Sie an, tiefer zu graben und stellen fest, dass Sie gerade die Büchse der Pandora geöffnet haben.
TAMSIV unterstützt hierarchische Gruppen bis zu 6 Ebenen Tiefe. Mein Tauchclub zum Beispiel: Club → Technische Kommission → Stufe 1 → Dienstagsgruppe.
Das Datenmodell
Jede Gruppe hat eine parent_id, die auf ihre übergeordnete Gruppe verweist. Um den vollständigen Baum anzuzeigen, verwende ich rekursive Abfragen (CTE) in PostgreSQL mit einer Klausel WHERE depth < 6 als Schutz.
Vier Rollen, vier Realitäten
- Admin – alles tun: erstellen, ändern, löschen, Mitglieder verwalten
- Manager – Aufgaben und Memos verwalten, Mitglieder zuweisen
- Member – Inhalte erstellen, alle Gruppeninhalte sehen
- Viewer – nur Lesezugriff
Die Falle ist die Vererbung. Wenn Sie Admin einer übergeordneten Gruppe sind, sind Sie dann automatisch Admin der Untergruppen? In TAMSIV lautet die Antwort ja – aber mit Nuancen.
31 RLS-Richtlinien
Das ist die Anzahl der Row Level Security-Richtlinien, die ich für das kollaborative Schema schreiben musste. 31 Richtlinien zu testen, bedeutet mindestens 31 Szenarien. Methodisch, langweilig, unerlässlich.
Die Komponente HierarchicalGroupPicker
Auf der Frontend-Seite habe ich einen HierarchicalGroupPicker erstellt, der den Baum mit Einrückung, Rollensymbolen und einem Umschalter „Untergruppen einschließen“ anzeigt. Dies ist die Funktion, die mich am meisten Zeit gekostet hat. Aber es ist auch diejenige, die TAMSIV für echte Organisationen nutzbar macht.