Query
query syntax
query [<op-name>] {
  object [([argument])]{
    object-fields
  }
}
Example query:
query {
  user(
    where: { name: { _eq: "Amirmasoud" } }
  ) {
    id
    name
    created_at
  }
}
query_by_pk syntax
Return one model object (if found any) using defined PK defined for model using
getKeyName which gets primaryKey property on the model. It's
usually id. The input argument is also limited to this key.
query [<op-name>] {
  <query-field-name> (
    column1: value1
  )
  <object-fields>
}
Example:
query {
  user_by_pk(
    id: 32
  ) {
    name
    email
    created_at
  }
}
Simple Object
Example:
query {
  user {
    id
    name
    tags {
      id
      title
    }
    categories_aggregate {
      aggregate {
        count
      }
      nodes {
        title
      }
    }
  }
}
Aggregate object
user_aggregate {
  aggregate {
    count
    sum {
      ...aggregateOnThisFields
    }
    avg {
      ...aggregateOnThisFields
    }
    max {
      ...aggregateOnThisFields
    }
    min {
      ...aggregateOnThisFields
    }
  }
  nodes {
    id
    name
    tags {
      title
    }
    categories_aggregate {
      aggregate {
        count
      }
      nodes {
        title
      }
    }
  }
}
fragment aggregateOnThisFields on UserResultAggregateType {
  id
}
Available aggregate functions: min, max, sum, avg and, count.
Arguments
Distinct
Example:
query {
  user(distinct: true) {
    id
    name
    email
    created_at
  }
}
:warning: For PostgreSQL users: There is no
distinct_onsupport at the moment.
Where
Example:
query {
  user(where: {email: {_like: "%example.com"}}) {
    name
    tags {
      title
    }
  }
}
_and
Queries are executed with the and operator by default.
Example:
query {
  user(
    where: {
      _and: {
        name: { _nlike: "%pattern%" },
        updated_at: { _year: "2020" }
      }
    }
  ) {
    id
    name
    email
    updated_at
  }
}
_or
Example:
query {
  user(
    where: {
      _or: {
        name: { _nlike: "%pattern%" },
        updated_at: { _year: "2021" }
      }
    }
  ) {
    id
    name
    email
    updated_at
  }
}
_not
Example:
query {
  user(
    where: {
      _not: {
        name: { _nlike: "%pattern%" },
        updated_at: { _year: "2020" }
      }
    }
  ) {
    id
    name
    email
    updated_at
  }
}
Operators
| Operator | Equivalent | Note | 
|---|---|---|
| _eq | = | |
| _neq | <>,!= | |
| _gt | > | |
| _lt | < | |
| _gte | >= | |
| _lte | <= | |
| _in | IN | |
| _nin | NOT IN | |
| _like | LIKE | |
| _nlike | NOT LIKE | |
| _ilike | ILIKE | PostgreSQL only | 
| nilike | NOT ILIKE | PostgreSQL only | 
| _similar | SIMILAR TO | |
| _nsimilar | NOT SIMILAR TO | |
| _is_null | IS NULL | 
:warning: JSON operators are not yet supported.
Order
Example:
query {
  user(
    order_by: { id: asc }
  ) {
    id
    name
  }
}
Available orders: asc, desc
Pagination
Example #1:
query {
  user(
    limit: 5
    offset: 10
  ) {
    id
    name
  }
}
Example #2:
query {
  user(
    take: 5
    skip: 10
  ) {
    id
    name
  }
}