[Advent Calendar 2021][Day6]HasuraGraphQLを使ってデータモデルを作る

はじめに

Advent Calendar 2021のDay6。 今回は、HasuraGraphQLを使ってデータモデルを作っていこうと思います。

HasuraGrahpQLをDocker-Composeで起動する

  • Hasura CLIをインストールする
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | INSTALL_PATH=$HOME/gopath/bin bash

参考

https://hasura.io/docs/latest/graphql/core/hasura-cli/install-hasura-cli.html#install-hasura-cli

  • hasuraのCLIを初期化する
hasura init
  • docker-composeファイルを取得する
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml

参考

https://hasura.io/docs/latest/graphql/core/getting-started/docker-simple.html

そのままだと、Cloud Shellが再起動するとPostgresのデータが消えてしまうので、修正します。

diff --git a/docker-compose.yml b/docker-compose.yml
index 85c550e..50e4890 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,9 +4,11 @@ services:
     image: postgres:12
     restart: always
     volumes:
-    - db_data:/var/lib/postgresql/data
+    - ./hasura/db_data:/var/lib/postgresql/data
     environment:
       POSTGRES_PASSWORD: postgrespassword
+    ports:
+    - "5432:5432"
   graphql-engine:
     image: hasura/graphql-engine:v2.0.10
     ports:
@@ -26,6 +28,3 @@ services:
       HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
       ## uncomment next line to set an admin secret
  • docker-composeで起動する
docker-compose up -d

Cloud Shellの右上にあるウェブでプレビュー > ポート8080でプレビューをクリックします。そうするとHasuraの管理画面が表示されます。

テーブルを作る

Hasuraの管理画面でポチポチしながらテーブルの作成ができます。 作成するテーブルは2つ。

ER図

作成したテーブルはこちら

calendar table

participants table

設定をエクスポートする

再利用できるよう設定をエクスポートしておきます。

hasura metadata export

migrationファイルを作成する

DBスキーマも同様に再利用できるようMigrationファイルを作成します。

hasura migrate create init --from-server --database-name default

まとめ

今回は、HasuraGraphQLを使ってデータモデルをつくりました。 次回は、Nuxt3を使ってフロントエンドのプロジェクトを作成します。