com.networknt.starwars.schema.MutationSchema Maven / Gradle / Ivy
The newest version!
package com.networknt.starwars.schema;
import com.networknt.graphql.router.SchemaProvider;
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import graphql.schema.GraphQLObjectType;
import graphql.schema.GraphQLSchema;
import static graphql.Scalars.GraphQLInt;
import static graphql.schema.GraphQLArgument.newArgument;
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
public class MutationSchema implements SchemaProvider {
public static class NumberHolder {
int theNumber;
public NumberHolder(int theNumber) {
this.theNumber = theNumber;
}
public int getTheNumber() {
return theNumber;
}
public void setTheNumber(int theNumber) {
this.theNumber = theNumber;
}
}
public static class Root {
NumberHolder numberHolder;
public Root(int number) {
this.numberHolder = new NumberHolder(number);
}
public NumberHolder changeNumber(int newNumber) {
this.numberHolder.theNumber = newNumber;
return this.numberHolder;
}
public NumberHolder failToChangeTheNumber(int newNumber) {
throw new RuntimeException("Cannot change the number");
}
}
public static Root root = new Root(6);
public static GraphQLObjectType numberHolderType = GraphQLObjectType.newObject()
.name("NumberHolder")
.field(newFieldDefinition()
.name("theNumber")
.type(GraphQLInt))
.build();
public static GraphQLObjectType queryType = GraphQLObjectType.newObject()
.name("queryType")
.field(newFieldDefinition()
.name("numberHolder")
.dataFetcher(new DataFetcher() {
@Override
public Object get(DataFetchingEnvironment environment) {
return root.numberHolder;
}
})
.type(numberHolderType))
.build();
public static GraphQLObjectType mutationType = GraphQLObjectType.newObject()
.name("mutationType")
.field(newFieldDefinition()
.name("changeTheNumber")
.type(numberHolderType)
.argument(newArgument()
.name("newNumber")
.type(GraphQLInt))
.dataFetcher(new DataFetcher() {
@Override
public Object get(DataFetchingEnvironment environment) {
Integer newNumber = environment.getArgument("newNumber");
return root.changeNumber(newNumber);
}
}))
.field(newFieldDefinition()
.name("failToChangeTheNumber")
.type(numberHolderType)
.argument(newArgument()
.name("newNumber")
.type(GraphQLInt))
.dataFetcher(new DataFetcher() {
@Override
public Object get(DataFetchingEnvironment environment) {
Integer newNumber = environment.getArgument("newNumber");
return root.failToChangeTheNumber(newNumber);
}
}))
.build();
@Override
public GraphQLSchema getSchema() {
return GraphQLSchema.newSchema()
.query(queryType)
.mutation(mutationType)
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy