Custom Fields
If you've got a custom scalar, or just want to convert e.g. an integer to a
string to properly fit a record type (see above), you can use the @ppxCustom
directive to insert a custom function in the decoder:
module StringHeight = {
type t = string;
let parse = (height) => string_of_float(height);
let serialize = (height) => float_of_string(height);
}
module HeroQuery = [%graphql {|
{
hero {
name
height @ppxCustom(module: "StringHeight")
mass
}
}
|}];
In this example, height
will be converted from a float to a string in the
result. Using the module
argument, you can specify any decoder module with the
functions parse
, serialize
and type t
.
If you have custom scalars that you'd always would like to conver to a specific
type. You can do that in the customFields
part of the bsconfig.json
configuration.