GrapQL schema.graphqlの書き方①

以前の記事「GraphQLでDynamoDBにアクセス」でschema.graphqlのことを少し記載しました。今回は、もう少し具体的な記載をさせていただきます。
AWS Amplify では、「Amplify Studio」を利用して、GraphQL APIの構築を簡単に行う事が出来ます。(「AWS Amplify Studio が GraphQL API をフルサポート」参照)
Amplify Studio上で、テーブル構成の設定を行う事ができ、schema.graphqlのことを意識することなく生成することができます。
しかし、私は、schema.graphqlをエディタでゴリゴリと編集しています。
理由は、「権限や連携などなどの細かい指定を行いたい。Amplify Studioでは自由さがない感じがする」という、とってもわがままな動機です(汗)

実際のschema.graphqlの中身は以下の様な内容になります。

上記では、企業情報とユーザー情報をリンクさせています。企業情報に複数のユーザー情報が紐付いているというものとなります。

リンクの方法は、Companyテーブル内のusersフィールドに@hasManyを指定し,そのパラメータとして、Userテーブル内のインデックス名を指定しています。
このように、NoSQLでも、テーブルリンクを設定することができます。

@index を設定することで、対象のフィールドがDynamoDBのグローバルセカンダリインデックスとして設定され、検索キーとして利用する事が出来るようになります。このリンクによって、Companyのデータを取得するときにUsersの情報を同時に取得することが出来るようになります。もちろんUsersの情報が不要であれば、そのように指定することも可能です。

このようにschema.graphqlのファイル上で、テーブル定義とリンク情報、クエリー名・・・と各種の設定を行う事ができ、コード上にテーブル設計の一部を持たせることができます。
上記の様にschema.graphqlの作成後、Amplfy pushとすることで、AWS AppSyncへの反映とともに、Query、Mutation、Subscriptionのファイルが自動で生成されます。
上記のQuery、Mutation、Subscription内には、クエリーが宣言されており、フロントサイドのプログラム上で、それらを使用してDynamoDBへのアクセスができる様になります。

IT改善のご相談はこちら