hackers.pub 館

照会室(graphql)

ja· en· ko
はじめての人へ新しい画面のためにデータを問い合わせる窓口(GraphQL)です。

画面がほしいデータを、ほしい形で、一度に聞けます。新しい画面を作るたびにサーバへ新しい窓口を頼まなくていい——次の館(web-next)がどんな姿になっても、この照会室が応えます。

いちばんの見どころは、同じpostTableがNote、Article、Questionという三つの顔に化けること。台帳は一冊なのに、照会の窓からは三種類の資料に見える。

見どころ

  • 権限はscope-based: signed(セッションあり)と、台帳を引いて確かめるasyncなmoderator
  • 問いの重さに関税がある——匿名は深さ11・複雑度20000まで、署名済みは20・25000まで
  • drizzle-orm rc.2の癖(getTableConfigの主キー列が別インスタンスを返す)を、名前で貼り直す率直なパッチがbuilder.tsにある
  • 領域ごとに一件一ファイル(account.ts、post.ts、poll.ts、moderation.ts……)+併設テスト

経文の一節

export const builder = new SchemaBuilder<PothosTypes>({
  plugins: [
    ComplexityPlugin,
    RelayPlugin,
    ScopeAuthPlugin,
    DrizzlePlugin,
    DataloaderPlugin,
    SimpleObjectsPlugin,
    TracingPlugin,
    WithInputPlugin,
    ErrorsPlugin,
  ],
graphql/builder.ts L213-L224— 九枚のプラグインの重ね着

間取り

graphql/builder.ts
九枚のプラグインと関税、drizzleの貼り直しパッチ
graphql/mod.ts
各領域を副作用importで集めてtoSchema()
graphql/server.ts
Yogaサーバ。Bearer→セッションの文脈作り
graphql/post.ts
一冊のpostTableが三つの顔に化けるところ

となりの部屋

そとへのリンク