GraphQL Mutation(更新処理)

Qiita のアカウントを削除したので Qiita へリンクしていた記事を非公開にしました。

以前からほぼアドベントカレンダーでしか投稿してなかったので、今後も学習記録はこのブログに書きます。

開発環境

  • go1.18.1 linux/amd64
  • github.com/99designs/gqlgen v0.17.5

本文

GraphQL で更新処理を実装した。

https://gitlab.com/k1350/daybreak_sample/-/tree/graqhql_update_blog

Directive を使ったバリデーションは複合バリデーションが面倒なのだが、他にいい感じの機構が見つけられていない。
そもそも GraphQL 自体 Query では良い効果を発揮するものの、Mutation についてはそれほど良さが見いだせない物なので、もしかしたら GraphQL と RESTful を組み合わせるほうがいいのかもしれない。

またエラーを適当に返していたのでカスタムエラーへの置き換えを実装した。
後でエラーログ書き出し時にスタックトレースが取れるように errors.Wrap() で元のエラーをくるむ方式にしているが、そのまま返すとフロント側にはくるむ前のエラーメッセージも返ってしまうので、エラーを返す前にフロントに見えてもいいエラーメッセージに直す処理を入れている。

https://gqlgen.com/reference/errors/

に書いてある error presenter というのをうまく活用したいのだが gqlerror.Error という型について調べないと使えないため、今度その気になったら調べる予定。