GraphQL Mutations
GraphQL mutations are used to create, update, and delete data via the workspace API.
8base's GraphQL engine auto-generates mutations as part of the GraphQL schema based on your workspace tables. All workspace tables can recieve mutations through the workspace endpoint.
In the following examples, we have a table called Posts, which contains fields and relations like title, body, author.
Auto-generated mutations
Whenever a table is added to a work space, four GraphQL mutation operations are auto-generated for the table. They are:
tableNameCreate(...)- Acceptsdataas an argument from which it will populate a new record in the database table.tableNameCreateMany(...)- Acceptsdataas an argument from which it will populate one or more new records in the database table.tableNameUpdate(...)- Acceptsdataandfilteras arguments with which it will update an existing record.tableNameUpdateByFilter(...)- Acceptsdataandfilteras arguments with which it will update an list of existing record.tableNameDelete(...)- Acceptsdata,filter, andforceas arguments with which it will delete an existing record - and dependent records when specified.tableNameDeleteByFilter(...)- Acceptsfilterandforceas arguments with which it will delete an list of existing record.tableNameDestroy(...)- Acceptsfilterandforceas arguments with which it will permanently destroy an existing or deleted record - and dependent records when specified.tableNameDestroyByFilter(...)- Acceptsfilterandforceas arguments with which it will destroy an list of existing record.tableNameRestore(...)- Acceptsidas an argument with which it will restore a previously deleted records; does not work on destroyed records.
Delete vs. Destroy
The 8base API differentiates between soft delete and hard delete actions by using tableNameDelete and tableNameDestroy operations.
When a record has a tableNameDelete action performed on it, it's deletedAt timestamp attribute is updated to reflect the time at which it got deleted. All records with a non-zero deletedAt value will be hidden from API results, unless the withDeleted: true argument gets specified in a query. Deleted records will still affect validations when creating and updating records that have mandatory and unique fields.
When a record has a tableNameDestroy action performed on it, it is permanently deleted from the database and cannot be recovered. Additionally, if the force: true argument is specified all dependent child records will also be permanently deleted.
Relationships
A cool feature of 8base API is the ability to create related objects while creating or updating parent objects. The following operations on relationships are supported:
- Create: Create and relate child objects.
- Update: Updates a record through the existing relationship.
- Connect: Connect existing objects in addition to already connected objects.
- Reconnect: Replace old connected objects with a new set of connected objects (update mutation only).
- Disconnect: Disconnect connected object(s) (update mutation only).
Arguments
8base accepts to the following mutation arguments, depending on the operation.
- data. Data used to update or locate the record.
- filter. A filter containing a unique field value for locating the record.
- force. Deletes all child records having a mandatory association to the record being deleted. Defaults to
false.