Mutations
The CRUDResolver automatically exposes six mutation 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
import { FilterableField, IDField } from '@nestjs-query/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 the following endpoints referenced
createOneTodoItem
- graphql endpoint to create a single record.createManyTodoItems
- graphql endpoint to create multiple records,updateOneTodoItem
- graphql endpoint to update a single record by id.updateManyTodoItems
- graphql endpoint update multiple records with a filter,deleteOneTodoItem
- graphql endpoint to delete one record by id.deleteManyTodoItems
- graphql endpoint to delete multiple records with a filter.
#
Create OneThe CRUDResolver
will by default expose a createOne
mutation using the name of the DTO to name the mutation.
In this example we create a single TodoItem
, the input by default will be a Partial
of the DTO.
- GraphQL
- Response
mutation { createOneTodoItem( input: { todoItem: { title: "Create One Todo Item", completed: false } } ) { id title completed created updated }}
{ "data": { "createOneTodoItem": { "id": "1", "title": "Create One Todo Item", "completed": false, "created": "2020-01-14T09:01:35.834Z", "updated": "2020-01-14T09:01:35.834Z" } }}
#
Create ManyThe CRUDResolver
will by default expose a createMany
mutation using the name of the DTO to name the mutation.
In this example we create multiple TodoItems
, the each record is a Partial
of the DTO.
#
ExamplesThe following example creates two TodoItems
.
- GraphQL
- Response
mutation { createManyTodoItems( input: { todoItems: [ { title: "Create Many Todo Items - 1", completed: false } { title: "Create Many Todo Items - 2", completed: true } ] } ) { id title completed created updated }}
{ "data": { "createManyTodoItems": [ { "id": "2", "title": "Create Many Todo Items - 1", "completed": false, "created": "2020-01-14T09:01:55.110Z", "updated": "2020-01-14T09:01:55.110Z" }, { "id": "3", "title": "Create Many Todo Items - 2", "completed": true, "created": "2020-01-14T09:01:55.110Z", "updated": "2020-01-14T09:01:55.110Z" } ] }}
#
Update OneThe CRUDResolver
will by default expose an updateOne
mutation that takes two fields:
id
: The id of the record to update.update
: The values to update on the record. This is a partial so you only have to pass in the values you want to change.
#
ExamplesThe following example updates the record with id
equal to 1
to completed=true
- GraphQL
- Response
mutation { updateOneTodoItem(input: { id: 1, update: { completed: true } }) { id title completed created updated }}
{ "data": { "updateOneTodoItem": { "id": "1", "title": "Create One Todo Item", "completed": true, "created": "2020-01-14T07:00:31.763Z", "updated": "2020-01-14T09:02:28.167Z" } }}
#
Update ManyThe CRUDResolver
will by default expose an updateMany
mutation that takes two fields:
filter
: The filter to use to find the records to update.- NOTE The filter CANNOT be an empty object. This prevents accidental updating of all records.
update
: The values to update on the record. This is a partial so you only have to pass in the values you want to change.
The response contains the number of records updated.
#
ExamplesThe following example updates records with an id
equal to 1 or 2 to completed=true
.
- GraphQL
- Response
mutation { updateManyTodoItems( input: { filter: { id: { in: [1, 2] } }, update: { completed: true } } ) { updatedCount }}
{ "data": { "updateManyTodoItems": { "updatedCount": 2 } }}
#
Delete OneThe CRUDResolver
will by default expose a deleteOne
mutation that allows you to delete a record by id:
#
ExamplesThe following example deletes the record with an id equal to 1.
- GraphQL
- Response
mutation { deleteOneTodoItem(input: { id: 1 }) { id title completed created updated }}
{ "data": { "deleteOneTodoItem": { "title": "Create One Todo Item", "completed": true, "created": "2020-01-14T07:00:31.763Z", "updated": "2020-01-14T09:02:51.429Z" } }}
#
Delete ManyThe CRUDResolver will by default expose a deleteMany
mutation that takes a filter
:
NOTE The filter CANNOT be an empty object. This prevents accidental deletion of all records.
#
ExamplesThe following example deletes all records that start with Create Many Todo Items
.
- GraphQL
- Response
mutation { deleteManyTodoItems( input: { filter: { title: { like: "Create Many Todo Items%" } } } ) { deletedCount }}
{ "data": { "deleteManyTodoItems": { "deletedCount": 6 } }}