mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-18 04:51:35 +03:00
413 lines
6.1 KiB
ReStructuredText
413 lines
6.1 KiB
ReStructuredText
.. title:: API Reference - Query/Subscription
|
|
|
|
API Reference - Query/Subscription
|
|
==================================
|
|
|
|
Query/Subscription syntax
|
|
-------------------------
|
|
|
|
.. code-block:: none
|
|
|
|
query|subscription [<op-name>] {
|
|
object [([argument])]{
|
|
object-fields
|
|
}
|
|
}
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - op-name
|
|
- false
|
|
- Value
|
|
- Name query/subscription for observability
|
|
* - object
|
|
- true
|
|
- Object_
|
|
- Name of the table/object
|
|
* - argument
|
|
- false
|
|
- Argument_
|
|
- One or more of filter criteria, instructions for sort order or pagination
|
|
|
|
**E.g. QUERY**:
|
|
|
|
.. code-block:: graphql
|
|
|
|
query {
|
|
author(where: {articles: {rating: {_gte: 4}}} order_by: {name: asc}) {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
|
|
**E.g. SUBSCRIPTION**:
|
|
|
|
.. code-block:: graphql
|
|
|
|
subscription {
|
|
author(where: {articles: rating: {_gte: 4}}} order_by: {name: asc}) {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
|
|
.. note::
|
|
|
|
For more examples and details of usage, please see :doc:`this <../queries/index>`.
|
|
|
|
Syntax definitions
|
|
------------------
|
|
|
|
Object
|
|
^^^^^^
|
|
|
|
Simple Object :-
|
|
****************
|
|
|
|
.. code-block:: none
|
|
|
|
object-name {
|
|
field1
|
|
field2
|
|
..
|
|
nested object1
|
|
nested object2
|
|
aggregate nested object1
|
|
..
|
|
}
|
|
|
|
E.g.
|
|
|
|
.. code-block:: graphql
|
|
|
|
author {
|
|
id # scalar field
|
|
name # scalar field
|
|
article { # nested object
|
|
title
|
|
}
|
|
article_aggregate { # aggregate nested object
|
|
aggregate {
|
|
count
|
|
}
|
|
nodes {
|
|
title
|
|
}
|
|
}
|
|
}
|
|
|
|
Aggregate Object :-
|
|
*******************
|
|
|
|
.. code-block:: none
|
|
|
|
object-name_aggregate {
|
|
aggregate {
|
|
count
|
|
sum {
|
|
field
|
|
..
|
|
}
|
|
avg {
|
|
field
|
|
..
|
|
}
|
|
stddev {
|
|
field
|
|
..
|
|
}
|
|
stddev_samp {
|
|
field
|
|
..
|
|
}
|
|
stddev_pop {
|
|
field
|
|
..
|
|
}
|
|
variance {
|
|
field
|
|
..
|
|
}
|
|
var_samp {
|
|
field
|
|
..
|
|
}
|
|
var_pop {
|
|
field
|
|
..
|
|
}
|
|
max {
|
|
field
|
|
..
|
|
}
|
|
min {
|
|
field
|
|
..
|
|
}
|
|
nodes {
|
|
field1
|
|
field2
|
|
..
|
|
nested object1
|
|
nested object2
|
|
aggregate nested object1
|
|
..
|
|
}
|
|
}
|
|
|
|
(For more details on aggregate functions, refer to `Postgres docs <https://www.postgresql.org/docs/current/functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE>`__.)
|
|
|
|
E.g.
|
|
|
|
.. code-block:: graphql
|
|
|
|
author_aggregate {
|
|
aggregate {
|
|
count # total count
|
|
sum {
|
|
id # sum aggregate on id
|
|
}
|
|
avg {
|
|
id # avg aggregate on id
|
|
}
|
|
stddev {
|
|
id # stddev aggregate on id
|
|
}
|
|
stddev_samp {
|
|
id # stddev_samp aggregate on id
|
|
}
|
|
stddev_pop {
|
|
id # stddev_pop aggregate on id
|
|
}
|
|
variance {
|
|
id # variance aggregate on id
|
|
}
|
|
var_samp {
|
|
id # var_samp aggregate on id
|
|
}
|
|
var_pop {
|
|
id # var_pop aggregate on id
|
|
}
|
|
max {
|
|
id # max aggregate on id
|
|
}
|
|
min {
|
|
id # min aggregate on id
|
|
}
|
|
}
|
|
|
|
nodes { # objects
|
|
id # scalar field
|
|
name # scalar field
|
|
|
|
article { # nested object
|
|
title
|
|
}
|
|
|
|
article_aggregate{ # aggregate nested object
|
|
aggregate {
|
|
count
|
|
}
|
|
nodes {
|
|
title
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Argument
|
|
^^^^^^^^
|
|
|
|
.. parsed-literal::
|
|
|
|
WhereExp_ | OrderByExp_ | PaginationExp_
|
|
|
|
.. _WhereExp:
|
|
|
|
WhereExp
|
|
********
|
|
|
|
.. parsed-literal::
|
|
|
|
where: BoolExp_
|
|
|
|
BoolExp
|
|
"""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
AndExp_ | OrExp_ | NotExp_ | ColumnExp_
|
|
|
|
AndExp
|
|
######
|
|
|
|
.. parsed-literal::
|
|
|
|
{
|
|
_and: [BoolExp_]
|
|
}
|
|
|
|
OrExp
|
|
#####
|
|
|
|
.. parsed-literal::
|
|
|
|
{
|
|
_or: [BoolExp_]
|
|
}
|
|
|
|
NotExp
|
|
######
|
|
|
|
.. parsed-literal::
|
|
|
|
{
|
|
_not: BoolExp_
|
|
}
|
|
|
|
ColumnExp
|
|
#########
|
|
|
|
.. parsed-literal::
|
|
|
|
{
|
|
field-name : {Operator_: Value }
|
|
}
|
|
|
|
.. _Operator:
|
|
|
|
Operator
|
|
########
|
|
Generic operators (all column types except json, jsonb) :
|
|
|
|
- ``_eq``
|
|
- ``_neq``
|
|
- ``_in``
|
|
- ``_nin``
|
|
- ``_gt``
|
|
- ``_lt``
|
|
- ``_gte``
|
|
- ``_lte``
|
|
|
|
JSONB operators:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Operator
|
|
- PostgreSQL equivalent
|
|
* - ``_contains``
|
|
- ``@>``
|
|
* - ``_contained_in``
|
|
- ``<@``
|
|
* - ``_has_key``
|
|
- ``?``
|
|
* - ``_has_keys_any``
|
|
- ``?|``
|
|
* - ``_has_keys_all``
|
|
- ``?&``
|
|
|
|
(For more details on what these operators do, refer to `Postgres docs <https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE>`__.)
|
|
|
|
Text related operators :
|
|
|
|
- ``_like``
|
|
- ``_nlike``
|
|
- ``_ilike``
|
|
- ``_nilike``
|
|
- ``_similar``
|
|
- ``_nsimilar``
|
|
|
|
Checking for ``null`` values :
|
|
|
|
- ``_is_null`` (takes true/false as values)
|
|
|
|
|
|
.. _OrderByExp:
|
|
|
|
OrderByExp
|
|
**********
|
|
|
|
.. parsed-literal::
|
|
|
|
order_by: (TableOrderBy_ | [ TableOrderBy_ ])
|
|
|
|
E.g.
|
|
|
|
.. parsed-literal::
|
|
|
|
order_by: {id: desc}
|
|
|
|
or
|
|
|
|
.. parsed-literal::
|
|
|
|
order_by: [{id: desc}, {author: {id: asc}}]
|
|
|
|
|
|
TableOrderBy
|
|
************
|
|
|
|
For columns:
|
|
|
|
.. parsed-literal::
|
|
|
|
{column: OrderByEnum_}
|
|
|
|
For object relations:
|
|
|
|
.. parsed-literal::
|
|
{relation-name: TableOrderBy_}
|
|
|
|
E.g.
|
|
|
|
Order by type for "article" table:
|
|
|
|
.. code-block:: graphql
|
|
|
|
input article_order_by {
|
|
id: order_by
|
|
title: order_by
|
|
content: order_by
|
|
author_id: order_by
|
|
#order by using "author" object relationship columns
|
|
author: author_order_by
|
|
}
|
|
|
|
OrderByEnum
|
|
***********
|
|
|
|
.. code-block:: graphql
|
|
|
|
#the order_by enum type
|
|
enum order_by {
|
|
#in the ascending order, nulls last
|
|
asc
|
|
#in the ascending order, nulls last
|
|
asc_nulls_last
|
|
#in the ascending order, nulls first
|
|
asc_nulls_first
|
|
#in the descending order, nulls first
|
|
desc
|
|
#in the descending order, nulls first
|
|
desc_nulls_first
|
|
#in the descending order, nulls last
|
|
desc_nulls_last
|
|
}
|
|
|
|
|
|
.. _PaginationExp:
|
|
|
|
PaginationExp
|
|
*************
|
|
|
|
.. parsed-literal::
|
|
|
|
limit: Integer
|
|
[offset: Integer]
|