Stell dir also einen Beitrag mit drei verschiedenen Gruppenerwähnungen vor. Er wird bearbeitet, und eine vierte Erwähnung wird hinzugefügt.
Beim Speichern der Bearbeitung können wir eine Abfrage wie diese verwenden, um die aktuelle Liste der Gruppenerwähnungen für diesen Beitrag zu ermitteln.
-- [Parameter]
-- text :post_id
select gm.group_id, g.name
from group_mentions gm
join groups g on (gm.group_id = g.id)
where post_id = :post_id
Dann können wir, indem wir die Ergebnisse der Abfrage mit der Liste der im Beitrag erwähnten Gruppen vergleichen, die neuen Erwähnung(en) finden.
Das scheint keine allzu große Berechnung zu sein, aber vielleicht übersehe ich etwas Offensichtliches. Das klingt auch nach etwas, das als Hintergrundtask erledigt werden könnte.
Was das JIT-Banner zur Benachrichtigung der Gruppe(n) betrifft, könnte diese Logik vielleicht über einen API-Endpunkt (/post/<id>/mentions.json) exponiert werden, um diese Daten asynchron abzurufen.