Endpoints
The CRUDResolver automatically exposes two query endpoints. The endpoints names will be derived from
name provided to @ObjectType
or the class name.
The following examples are based on the following TodoItemDTO
todo-item.dto.ts
import { FilterableField } from '@ptc-org/nestjs-query-graphql';
import { ObjectType, ID, GraphQLISODateTime } from '@nestjs/graphql';
@ObjectType('TodoItem')
export class TodoItemDTO {
@IDField(() => ID)
id!: string;
@FilterableField()
title!: string;
@FilterableField()
completed!: boolean;
@FilterableField(() => GraphQLISODateTime)
created!: Date;
@FilterableField(() => GraphQLISODateTime)
updated!: Date;
}
In the following examples you will see two endpoints referenced
todoItem
- graphql endpoint to find a record by id.todoItems
- graphql endpoint to filter, page, and sort records,
Find By Id
The following example finds a TodoItem
by id.
- GraphQL
- Response
{
todoItem(id: "1") {
id
title
completed
created
updated
}
}
{
"data": {
"todoItem": {
"id": "1",
"title": "Create One Todo Item",
"completed": false,
"created": "2020-01-14T07:00:31.763Z",
"updated": "2020-01-14T07:00:31.763Z"
}
}
}
Querying
As described above the CRUDResolver
will expose a query method called todoItems
. The result will be either
a connection
or array depending on the paging strategy you choose
note
All examples below assume that a connection is returned but filtering and sorting work the same way for all paging strategies. To read how to page collections read the paging docs
By default if you do not provided an arguments you can query for all records.
- GraphQL
- Response
{
todoItems{
pageInfo{
hasNextPage
hasPreviousPage
startCursor
endCursor
}
edges{
node{
id
title
completed
created
updated
}
cursor
}
}
}
{
"data": {
"todoItems": {
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"startCursor": "YXJyYXljb25uZWN0aW9uOjA=",
"endCursor": "YXJyYXljb25uZWN0aW9uOjI="
},
"edges": [
{
"node": {
"id": "1",
"title": "Create One Todo Item",
"completed": false,
"created": "2020-01-01T00:43:16.000Z",
"updated": "2020-01-01T00:43:16.000Z"
},
"cursor": "YXJyYXljb25uZWN0aW9uOjA="
},
{
"node": {
"id": "2",
"title": "Create Many Todo Items - 1",
"completed": false,
"created": "2020-01-01T00:49:01.000Z",
"updated": "2020-01-01T00:49:01.000Z"
},
"cursor": "YXJyYXljb25uZWN0aW9uOjE="
},
{
"node": {
"id": "3",
"title": "Create Many Todo Items - 2",
"completed": true,
"created": "2020-01-01T00:49:01.000Z",
"updated": "2020-01-01T00:49:01.000Z"
},
"cursor": "YXJyYXljb25uZWN0aW9uOjI="
}
]
}
}
}