graphql-engine/docs/graphql/core/actions/action-examples.rst.wip
Praveen Durairaju 3ad42ed540 docs: add webinar links
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: d5b680ce50bfa331bbead32ffe8ad7ba95a6b51f
2021-03-09 08:37:34 +00:00

145 lines
3.6 KiB
Plaintext

.. meta::
:description: Hasura action examples
:keywords: hasura, docs, actions, examples
.. _action_examples:
Action examples
===============
.. contents:: Table of contents
:backlinks: none
:depth: 1
:local:
Introduction
------------
This page provides reference examples of typical action use cases.
..
Relationships
-------------
Object relationship from an action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Let's say we have the following two tables in our schema:
.. code-block:: sql
authors (id int, name text, is_active boolean, rating int, address_id)
addresses (id int, street text, zip text, city text)
Now we have an action ``updateAddress`` that looks as follows:
.. thumbnail:: /img/graphql/core/actions/update-address-action-definition.png
:alt: Update address action
:width: 65%
We can now add an object relationship from the ``updateAddress`` action to the ``authors`` table in our schema.
We call it ``updatedAddressAuthor``.
.. thumbnail:: /img/graphql/core/actions/action-object-relationship.png
:alt: Object relationship from action
:width: 65%
It's now possible to return the author from the ``updateAddress`` action through the newly created relationship:
.. graphiql::
:view_only:
:query:
mutation {
updateAddress(address:
{
id: 1
street: "New York Avenue"
zip: "98000"
city: "New Orleans"
}
) {
id
updatedAddressAuthor {
name
}
}
}
:response:
{
"data": {
"updateAddress": {
"id": 1,
"updatedAddressAuthor": {
"name": "J.K. Rowling"
}
}
}
}
Array relationship from an action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Let's say we have the following two tables in our schema:
.. code-block:: sql
authors (id int, name text, is_active boolean, rating int)
articles (id int, title text, content text, author_id int)
Now we have an action ``updateAuthor`` that looks as follows:
.. thumbnail:: /img/graphql/core/actions/update-author-action-definition.png
:alt: Update author action
:width: 65%
We can now add an array relationship from the ``updateAuthor`` action to the ``articles`` table in our schema.
We call it ``updatedAuthorArticles``.
.. thumbnail:: /img/graphql/core/actions/action-array-relationship.png
:alt: Array relationship from action
:width: 65%
It's now possible to return articles from the ``updateAuthor`` action through the newly created relationship:
.. graphiql::
:view_only:
:query:
mutation {
updateAuthor(author:
{
id: 442,
name: "Joanne K. Rowling",
is_active: true,
rating: 10
}
) {
id
updatedAuthorArticles {
title
}
}
}
:response:
{
"data": {
"updateAuthor": {
"id": 442,
"updatedAuthorArticles": [
{
"title": "Harry Potter and the Philosopher's Stone"
},
{
"title": "Harry Potter and the Chamber of Secrets"
}
]
}
}
}
.. admonition:: Additional Resources
Introduction to Hasura Actions - `View Recording <https://hasura.io/events/webinar/hasura-actions/?pg=docs&plcmt=body&cta=view-recording&tech=>`__.