@generate
The @generate
directive is used to specify which GraphQL APIs are generated for a given type.
Here’s the GraphQL definition of the directive
input GenerateQueryParams {
get: Boolean
query: Boolean
password: Boolean
aggregate: Boolean
}
input GenerateMutationParams {
add: Boolean
update: Boolean
delete: Boolean
}
directive @generate(
query: GenerateQueryParams,
mutation: GenerateMutationParams,
subscription: Boolean) on OBJECT | INTERFACE
The corresponding APIs are generated by setting the Boolean
variables inside the @generate
directive to true
. Passing false
forbids the generation of the corresponding APIs.
The default value of the subscription
variable is false
while the default value of all
other variables is true
. Therefore, if no @generate
directive is specified for a type, all queries and mutations except subscription
are generated.
Example of @generate directive
type Person @generate(
query: {
get: false,
query: true,
aggregate: false
},
mutation: {
add: true,
delete: false
},
subscription: false
) {
id: ID!
name: String!
}
The GraphQL schema above will generate a queryPerson
query and addPerson
, updatePerson
mutations. It won’t generate getPerson
, aggregatePerson
queries nor a deletePerson
mutation as these have been marked as false
using the @generate
directive.
Note that the updatePerson
mutation is generated because the default value of the update
variable is true
.