Help us understand the problem. What is going on with this article?

AWS Amplify フレームワークの使い方Part5〜GraphQL Transform @model編〜

はじめに

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.jsmutations.jssubscriptions.jsが作られることで、CRUDが簡単に行えるようになります。

基本設定

下記の例では、idをプライマリーキーとして、Postテーブルが作成されます。

type Post @model {
    id: ID!
    title: String!
    tags: [String!]!
}

PostデータのCRUDするために、queries.jsにはgetPostlistPostmutations.jsにはcreatePostupdatePostdeletePostsubscriptions.jsにはonCreatePostonUpdatePostonDeletePostがそれぞれ自動生成されます。

具体的な使用方法については、別記事でまとめていますので、下記の記事をご確認ください。
AWS Amplify フレームワークの使い方Part4〜API実践編〜

詳細設定

@modelのあとに、記述を追加することで自動生成されるCURDを制御することができます。
下記のように記述した場合は、mutations.jssubscriptions.js内に自動生成なしでqueries.js内にgetPostのみが生成されます。

type Post @model(queries: { get: "post" }, mutations: null, subscriptions: null) {
    id: ID!
    title: String!
    tags: [String!]!
}

おわりに

もう少し細かい事もできるようですが、現状試しているのはここまでになります。@modelさえ使えれば、簡単なアプリはできてしまうので、一度は触ってもらうとわかりやすいと思います。

参考

GraphQL Transform(公式ドキュメント)

関連記事

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編〜
AWS Amplify フレームワークの使い方Part8〜GraphQL Transform @connection編〜

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした