344 Views
January 18, 24
スライド概要
1/11 ent.について リゾルバ実装編
2/11 前回のあらすじ ・グラフ構造に特化したORM、ent.の設定を開始 ・ent.の設定ファイルによって、RDBの全テーブルのフィールドと、 テーブル間の関係性を定義
3/11 今回用意したテーブル構造 ・汎用なSNSを想定 ・アカウントはポストを投稿できる ・ポストには位置情報を追加できる ・ポストには「いいね」とコメントができる ・アカウント同士でフレンド関係を作れる ・特定のアカウントをミュートにできる
4/11 GraphQLサーバーの流れと実装 リゾルバがクエリを受け取り、リゾルバがORMの関数を呼び出し、 ORMがSQLを発行する クライアント リゾルバ ORM(ent.) ent. + gqlgenで実装 手動で実装 DB .entのデータ モデリングで定義
5/11 ent.とgqlgenの連携 gqlgen ・スキーマを定義することで、クエリ受け取りと レスポンス返却の部分を自動で実装するライブラリ ent.はデータモデルからスキーマを生成する機能があり、 そのスキーマからリゾルバを生成する流れを自動化できる gqlgenによる自動生成前に 簡単なコードを実行するように仕込む
6/11 ent.とgqlgenによる自動生成後 リゾルバが自動的に作成された後、panic~ の部分を書き換えていく スキーマを追加で用意すれば、他のリゾルバも 自動で生成してくれる
7/11 ent.とgormのリゾルバ記述の比較① Golangの代表的なORMであるgormでリゾルバを実装した場合と比較 全ポストを検索する記述 gorm ent.
8/11 全ポスト+αの検索結果 ポストのID ポストのタイトル ポストの内容 ポストを投稿した アカウントの名前とそのフレンドの名前 レスポンス クエリ ポストにコメントした アカウントの名前とコメントの内容 ポストにいいねした アカウントの名前
9/11 ent.とgormのリゾルバ記述の比較② ポストを投稿する記述の比較 gorm ent.
10/11 ポストの投稿結果 クエリ レスポンス DB 投稿のデータ レスポンスしてほしいデータ
11/11 ここまでのまとめ ・データモデリング完了後、次に行うのはリゾルバの実装 ・ent.のgqlgenの連携によってリゾルバの実装を自動化できる ・gormと比べ、ent.のリゾルバ実装は簡単なコードで実装できる