所以,想象一下一个帖子中有三个不同的群组提及。编辑后,又添加了第四个提及。
在保存编辑时,我们可以使用如下查询来获取该帖子当前的群组提及列表:
-- [params]
-- 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
然后,通过将查询结果与帖子中实际提及的群组列表进行比对,我们就可以找出新增的提及。
这看起来计算量不算太大,但也许我漏掉了什么显而易见的地方。这也像是可以在后台任务中完成的那种事情。
至于关于通知群组的那个 JIT 横幅,也许可以通过一个 API 端点(/post/<id>/mentions.json)来暴露此逻辑,以便异步获取这些数据。