oapi-codegen icon indicating copy to clipboard operation
oapi-codegen copied to clipboard

Allow overriding primitive types with custom types

Open natsukagami opened this issue 4 years ago • 2 comments

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 *Options object as an additional parameter.
  • A new option has been added, primitive-mapping, which maps the primitive type to the actual type (int32 => null.Int32 for 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.

natsukagami avatar Aug 23 '21 09:08 natsukagami

@deepmap-marcinr is this one we can take inspiration from / will be replaced by your work in the v2 side of things?

jamietanna avatar Aug 28 '23 20:08 jamietanna

Apologies, meant to close #458 🫣

jamietanna avatar Jan 25 '24 14:01 jamietanna