I'm creating custom scalar types that override the built in Int
and Float
. I'd like to know whether the schema defines the value as nullable or not. I'd like to resolve an Int
differently than Int!
in my custom scalar type
What I want to do is within the resolver of the custom scalar type know whether the value is defined as Nullable or not in the schema so that I can resolve them differently and throw a custom error.
const resolvers = {
// ...
Int: new GraphQL.GraphQLScalarType ({
name: 'Int',
description: 'Custom Int type',
serialize (val, isNullable) {
},
parseValue (val, isNullable) {
// assume this parses the value
const value = transit.read (val);
// this does some type checking (using a library called sanctuary)
if (S.is ($.Integer) (value)) {
// if Nullable we want to return a maybe type
if (isNullable) return S.Just (value);
return value;
}
return isNullable ? S.Nothing : new Error ();
},
parseLiteral (ast) {
},
}),
}
The result for an Int
(Nullable) would be of type Maybe Integer
and the result of the Int!
(Non-Nullable) would be of type Integer