連合SNSの世界ぜんぶ——投稿、フォロー、ブロック、投票、通報——が、54枚の台帳にどう収まるかを見られます。自分で連合アプリを作る人にとって、この書庫は間取りの参考書です。
芯にあるのはrunInTransaction()という小さな作法。すでにトランザクションの中なら乗り合い、外なら新しく開く。館じゅうの棟が、この一つの作法に寄りかかっています。
見どころ
- 公開範囲はpgEnum+TS unionの両建て: public / unlisted / followers / direct / none
- 概念ごとにファイルとテストが対(post.ts/post.test.ts)。しかもlifecycle・remote・draftと、暮らしの場面別のテストまで分けてある
- relations.tsの関係図を、graphqlの照会室(Pothos drizzle)もこの書庫も、同じ一枚で共有する
経文の一節
export const POST_VISIBILITIES = [
"public",
"unlisted",
"followers",
"direct",
"none",
] as const;
export const postVisibilityEnum = pgEnum("post_visibility", POST_VISIBILITIES);