はじめに
Amplifyでの肝の部分であるAPI(AppSync = GraphQL)のスキーマ設計についてまとめていきます。その第一弾として、まず基本的な@model
の解説から行っていきます。
定義
@model
は以下のように定義されています。
directive @model(
queries: ModelQueryMap,
mutations: ModelMutationMap,
subscriptions: ModelSubscriptionMap
) on OBJECT
input ModelMutationMap { create: String, update: String, delete: String }
input ModelQueryMap { get: String, list: String }
input ModelSubscriptionMap {
onCreate: [String]
onUpdate: [String]
onDelete: [String]
level: ModelSubscriptionLevel
}
enum ModelSubscriptionLevel { off public on }
解説
@model
の宣言をすることで、DynamoDBにテーブルが作成することができ、AppSyncで呼び出しができるように設定してくれます。
graphlql
フォルダが自動生成され、その中にqueries.js
、mutations.js
、subscriptions.js
が作られることで、CRUDが簡単に行えるようになります。
基本設定
下記の例では、idをプライマリーキーとして、Postテーブルが作成されます。
type Post @model {
id: ID!
title: String!
tags: [String!]!
}
PostデータのCRUDするために、queries.js
にはgetPost
とlistPost
。mutations.js
にはcreatePost
とupdatePost
、deletePost
。subscriptions.js
にはonCreatePost
とonUpdatePost
、onDeletePost
がそれぞれ自動生成されます。
具体的な使用方法については、別記事でまとめていますので、下記の記事をご確認ください。
AWS Amplify フレームワークの使い方Part4〜API実践編〜
詳細設定
@model
のあとに、記述を追加することで自動生成されるCURDを制御することができます。
下記のように記述した場合は、mutations.js
とsubscriptions.js
内に自動生成なしでqueries.js
内にgetPost
のみが生成されます。
type Post @model(queries: { get: "post" }, mutations: null, subscriptions: null) {
id: ID!
title: String!
tags: [String!]!
}
おわりに
もう少し細かい事もできるようですが、現状試しているのはここまでになります。@model
さえ使えれば、簡単なアプリはできてしまうので、一度は触ってもらうとわかりやすいと思います。
参考
関連記事
AWS amplify フレームワークの使い方Part1〜Auth設定編〜
AWS Amplify フレームワークの使い方Part2〜Auth実践編〜
AWS Amplify フレームワークの使い方Part3〜API設定編〜
AWS Amplify フレームワークの使い方Part4〜API実践編〜
AWS Amplify フレームワークの使い方Part6〜GraphQL Transform @auth編〜
[AWS Amplify フレームワークの使い方Part7〜GraphQL Transform @key編〜]
(https://qiita.com/too/items/cb1dfb4f44536a3e9855)
AWS Amplify フレームワークの使い方Part8〜GraphQL Transform @connection編〜
AWS Amplify フレームワークの使い方Part9〜Function 基礎編〜
AWS Amplify フレームワークの使い方Part10〜Storage編〜
AWS Amplify フレームワークの使い方Part11〜Function 権限管理編〜
AWS Amplify フレームワークの使い方Part12〜ENV編〜
[AWS Amplify フレームワークの使い方Part13〜Auth 設定更新編〜]
(https://qiita.com/too/items/52f35860bcb5bdf5e667)
[AWS Amplify フレームワークの使い方Part14〜Lambda レイヤー編〜]
(https://qiita.com/too/items/54de781085bd9a3a66d0)