GraphQL実践 ~amplifyとtype~
aws amplifyのAPIでGraphQLを使用しています。
いままでプロダクトで使ってきていないため、触りながらメモを残していく感じでいくつか記事を書いていきます。
type
GraphQLのスキーマを作成するクエリになり、基本的なobjectになります。
type User @model { id: ID name: String }
@modelはamplifyのannotationになり、APIとしてAmazonDynamoDBに保存されるデータになります。
@modelを指定することで、queryやmutation, subcriptionや検索のtypeも設定されます。このあたりがamplifyが自動で作成してくれる内容だと思います。
RDBのテーブルに相当すると考えていいんでしょう。entityと表現されている説明もありますね。テーブルとentityの関係は同一ではありませんが、まず考え方としてテーブルとて進めてみます。
Scalar types
default scalar typesとして、型が用意されています。 * Int * Float * String * Boolean * ID
IDはunique identifierでStringのデータで作られます。
NotNullも指定可能で「!」をつけることで指定可能です。
- String!
Listsの表現もある
- [String]
custom scalar typesもあるみたいだが、使い方がまだわかっていません。ドキュメントでは、サンプルとしてDateが書かれています。
scalar Date
awsはAWSDateTimeを指定できますね。customがうまく使えるようになると拡張性があがるんでしょうかね。
その他
ほかにもenum, fragment, union, inputなどの指定があります。
type周りですらまだ探り探りのためすこしずつ理解を深めていきます。