Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@too

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編〜
AWS Amplify フレームワークの使い方Part9〜Function 基礎編〜
AWS Amplify フレームワークの使い方Part10〜Storage編〜
AWS Amplify フレームワークの使い方Part11〜Function 権限管理編〜
AWS Amplify フレームワークの使い方Part12〜ENV編〜
AWS Amplify フレームワークの使い方Part13〜Auth 設定更新編〜
AWS Amplify フレームワークの使い方Part14〜Lambda レイヤー編〜

7
Help us understand the problem. What is going on with this article?
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
too

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?