Allow overriding primitive types with custom types
Short Description
Allow primitive types (ints, floats, string types) to be replaced with an option, primitive-mapping, in the YAML configuration.
Motivation
Sometimes it is desirable to use a custom wrappers or different types entirely for the hard-coded types generated in oapi-codegen.
One of such reasons is for tighter controls over JSON marshalling (e.g. check for missing fields or perform some custom validation).
This can already be done with x-go-type extension tag, but it is very painful to do for e.g. every integer parameter in the whole YAML spec.
What has changed?
This is not a breaking change, no code generation change is made if there is no configuration change.
- A lot of functions now take the
*Optionsobject as an additional parameter. - A new option has been added,
primitive-mapping, which maps the primitive type to the actual type (int32=>null.Int32for example). - README has been updated to inform users of the new functionality.
Note that primitive-mapping is only available in the YAML configuration at the moment (no flags). I am not sure if it is desirable to add the flags / what is the best way to do it, so I left it out.
@deepmap-marcinr is this one we can take inspiration from / will be replaced by your work in the v2 side of things?
Apologies, meant to close #458 🫣