原文

Auto-generated insert mutation schema

自動生成された mutation schema の一例を見てみましょう。以下の GraphQL Schema は、article テーブルに record を挿入する mutation schema です。

For example, the auto-generated schema for the insert mutation field for a table article looks like this:

insert_article (
  objects: [article_insert_input!]!
  on_conflict: article_on_conflict
): article_mutation_response

# article テーブルに対する mutaion を行った結果返ってくる respose の type です
# response of any mutation on the table "article"
type article_mutation_response {
  # mutation によって影響を受けた row の数です
  # number of affected rows by the mutation
  affected_rows: Int!

  # mutation によって影響を受けた row の情報です
  # data of the affected rows by the mutation
  returning: [article!]!
}

# single object insert (supported from v1.2.0)
insert_article_one (
  object: article_insert_input!
  on_conflict: article_on_conflict
): article

上記の schema からわかるのは以下のことです。

  • objects という引数は必須であり、また複数の object を渡すことができる。
  • on_conflict という引数を渡すこともでき、そうした場合には、mutation は upsert mutation へと機能が変更される。
  • Mutation によって影響を受けた row の数と、影響を受けた object の情報を(nested object の形式で)得ることができる。
  • 単一の object を insert したい場合には、そのための mutation を使用することができる。(訳注: 元のドキュメントの説明は不十分であると感じたため、大きく変更している。原文では、single insert を用いると、単一の変更された object の情報が返ってくる旨のみ記述されている。)
  • objects argument is necessary and you can pass multiple objects to the mutation.
  • You can pass an on_conflict argument to convert the mutation to an upsert mutation.
  • You can return the number of affected rows and the affected objects (with nested objects) in the response.
  • You can use the single object insert to get the inserted object directly as the mutation response.