Hasuraを採用するにあたっての問題点・疑問点
public.icon
結論:Actionの理解に時間がかかった。RemoteSchemaも便利だが、これを採用する場合、こちらからもDBに連携する必要があるのので、一旦今回はActionを採用することにした。 ビジネスロックを書く場所の最適解がわからない 。公式的にはActionを推している
Hasura Action
REST APIで接続する。レスポンスを持ってDBにデータ保存
Hasura Remote Schema
graphQL Serverと接続できる
連携先のクエリをHasuraのクエリとmergeしてクライアントに渡せる。神機能
Hasuraから送ったままで終わるので、DBへの接続が多分面倒
https://gyazo.com/977c458dbbb3fdd26e1b5f443da185b0
これか!
Remote Schema to Database RelationshipsというRemote SchemaとDBを連携できる機能があるらしい
ここらへんに言及している記事がほとんどない
https://gyazo.com/dcd7b3d3836d7f132fcaf04ddae0f8fc
https://gyazo.com/a0629a14447a0e9d8ecb559ef3f06809
確かにあった
https://gyazo.com/34464b7c73ad9040b67d6a0f080afbfe
https://gyazo.com/8b895a7889db2ccea0138a4c8367dc68
銀の弾丸は存在しないHasura編 - aisaac技術ブログ
単純にAPIからもう一度Hasuraにリクエストしている例
https://www.youtube.com/watch?v=oqbxEp4FIjE
これや
https://i.gyazo.com/fe72133e281354b230722b18ef76bc70.gif
https://gyazo.com/bdcc760146655c2f0ca3e579669046ad
できた!これでほぼ問題点解決だ
Appからリクエスト→HasuraからActionsにリクエスト→別途RestAPIで処理を行う(バリデーションなど)→RestAPIのreturnにHasuraで行いたいクエリを含めたresponseを返す→HasuraでRestAPIのクエリを実行(書き込みも可能)→Appに返却
しかも、App側はActionsの関数も自動生成できる
RestAPIのコードも、クエリを書くだけで自動生成できる
ので、確かに、ほとんどのバックエンドの実装はしなくて良くなりそう!!!!
Event
DBのイベントに応じてAPIを繋いだりできる
AppRouterのバックエンドとか?