fix: Code-Review-Korrekturen für PR #1

- Cross-Tenant-Datenleck in get_group_members: Account-Filter im
  LEFT JOIN contacts hinzugefügt (c.account = g.account)
- CROSS JOIN in get_group durch sauberen JOIN ON g.id = gm.group_id
  ersetzt
- Leere Gruppen werden jetzt gespeichert (parse_group gibt auch
  leere member_uids-Listen zurück)
- ON DELETE CASCADE Doku korrigiert: CASCADE greift nur beim Löschen
  einer Gruppe, nicht beim Löschen eines Kontakts
- Migration für Bestands-DBs in README dokumentiert (sync_state
  leeren für vollen Re-Sync)
- Index idx_group_members_member_uid für get_groups_for_contact
- Unbenutzte is_admin-Variablen in neuen Endpoints bereinigt
This commit is contained in:
2026-08-07 15:30:17 +02:00
parent 94a279f207
commit cccb4217b0
4 changed files with 29 additions and 17 deletions
+2 -1
View File
@@ -77,7 +77,8 @@ CREATE TABLE IF NOT EXISTS group_members (
group_id INT NOT NULL,
member_uid VARCHAR(255) NOT NULL,
FOREIGN KEY (group_id) REFERENCES `groups`(id) ON DELETE CASCADE,
UNIQUE KEY uq_group_member (group_id, member_uid)
UNIQUE KEY uq_group_member (group_id, member_uid),
KEY idx_group_members_member_uid (member_uid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Protokoll der Geburtstags-Mails, verhindert Doppelversand am selben Tag.