CREATE TABLE comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, post_id TEXT NOT NULL, -- 不透明な投稿識別子 parent_id INTEGER REFERENCES comments(id), -- NULL = ルートコメント author TEXT NOT NULL, content TEXT NOT NULL, deleted INTEGER NOT NULL DEFAULT 0, deleted_at TEXT, created_at TEXT NOT NULL);
1 2 3 4 5 6 7 8 9 10
parent_id IS NULL = ルートコメント; parent_id IS NOT NULL = 返信。
ハウツー: スレッド化コメント API
このガイドでは、1 レベルの返信を持つコメントシステムの構築方法を説明します: ルートコメントは返信を受け取れますが、返信には返信できません(最大深さ = 1)。削除されたコメントはトゥームストーン化され、スレッド構造が保持されます。
スキーマ
2
3
4
5
6
7
8
9
10
parent_id IS NULL= ルートコメント;parent_id IS NOT NULL= 返信。エンドポイント
POST/posts/{postId}/commentsGET/posts/{postId}/commentsGET/posts/{postId}/comments/{id}POST/posts/{postId}/comments/{id}/repliesDELETE/posts/{postId}/comments/{id}ルートコメントの作成
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
コメントの一覧表示
2
3
4
5
6
7
8
9
10
11
12
13
14
コメントは
post_idにスコープされます。post-1のコメントはpost-2の一覧に表示されません。単一コメントの取得
2
3
4
5
6
7
8
9
10
11
12
返信の追加(最大深さ = 1)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
深さチェックの実装
2
3
4
5
6
7
8
9
10
11
12
canReceiveReply()が false を返した場合は 409 を返してください。トゥームストーン削除
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
トゥームストーン化はスレッド構造を保持します。親が削除された後も返信は表示されます。
2
3
4
5
6
7
トゥームストーン SQL
2
3
4
5
やってはいけないこと
detailを持つ 409 がより良いpost_idスコープがない