kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

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周りですらまだ探り探りのためすこしずつ理解を深めていきます。

参考

graphql.org

docs.amplify.aws