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.