@kussy_tessy@fedibird.com パッと思いつくのはこれなんですが色々な方法で循環参照してしまうので難しいです。
例えば 投稿 → メンション → メンション先固定ノート → 最初の投稿 とかで循環参照してしまうとカウントするのが困難になります。
@kussy_tessy@fedibird.com でもこの例だと途中でDBなどに保存したら重複を発見できるので例として適切じゃなかったですね…。
@usbharu
よくわかんないけど普通に再帰じゃだめなの?
digReferedPost(post, alreadyReferedPosts) {
if (alreadyReferedPosts.includes(post)) {
throw Exception('循環参照')
}
referedPosts = post.getReferedPostPosts()
if (referedPosts.length == 0){
return
}
alreadyReferedPosts.concat(referedPosts)
referedPosts.forEach(post => digReferedPost(post, alreadyReferedPosts)
}
@kussy_tessy@fedibird.com 既に存在しているノートかのチェックなどが簡単にできたら実現できます。毎回DBに問い合わせることになってそれこそ自滅しかねないので難しい感じです。
@usbharu ツリーリプライだとnが大きくなりそうだし微妙かな?