insomnia/packages/insomnia-smoke-test/server/graphql.ts

64 lines
1.6 KiB
TypeScript
Raw Normal View History

import { GraphQLEnumType, GraphQLInputObjectType, GraphQLInt, GraphQLObjectType, GraphQLSchema, GraphQLString } from 'graphql';
const TypeVars = new GraphQLObjectType({
name: 'Vars',
fields: () => ({
stringVar: { type: GraphQLString },
intVar: { type: GraphQLInt },
}),
});
const InputVars = new GraphQLInputObjectType({
name: 'VarsInput',
fields: () => ({
stringVar: { type: GraphQLString },
intVar: { type: GraphQLInt },
}),
});
export const schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
hello: {
type: GraphQLString,
resolve: () => 'Hello world!',
},
bearer: {
type: new GraphQLEnumType({
name: 'RingBearer',
description: 'Characters who at any time bore a Ring of Power.',
values: {
Frodo: { value: 0 },
Bilbo: { value: 1 },
Thror: { value: 2 },
Gandalf: { value: 3 },
Galadriel: { value: 4 },
WitchKing: { value: 5 },
Nazgul: { value: 6 },
Elrond: { value: 7 },
GilGalad: { value: 8 },
Cirdan: { value: 9 },
Thrain: { value: 10 },
},
}),
resolve: () => 3,
},
echoNum: {
type: GraphQLInt,
args: {
'intVar': { type: GraphQLInt },
},
resolve: () => 777,
},
echoVars: {
type: TypeVars,
args: {
'vars': { type: InputVars },
},
resolve: vars => vars,
},
},
}),
});