Let's assume I have this definition in my openapi.yml (this is just a madeup example to depict the issue I have):
components:
schemas:
Address:
type: object
properties:
name:
type: string
zip:
type: integer
format: int64
town:
type: string
This will lead to the generation of code for the model that looks like this:
public class Address {
@JsonProperty("name")
private String name = null;
@JsonProperty("zip")
private Long zip = null;
@JsonProperty("town")
private String town = null;
...
My issue is that I have to persist this Pojo in a database and there exists no table Address
(let's assume it is called Places
instead) and the column for the zipcode is called zipcode
instead of zip
.
So I would need two things:
- a way to tell OpenAPI about the aliases
Address=Places
andzip=zipcode
. - a way to make this information change the code created. For Hibernate for example this would mean to add
@Table(name="Places")
and@Column(name="zipcode")
in the right places.
Important remark: I can not change the API, it is expected to stick to Address
and zip
.
Can this be done ? I checked the specs and both swagger-codegen and openapi-generator (I'ld prefer the latter) but found no sign that something like this is covered. For openapi-generator I had a look at the Mustache templates and as far as I can tell there is no code that refers any "alias information" that was defined in the yaml file.
Do I have to go the hard way and define an OpenAPI extension like this or this plus customize the templates all by myself ? The closest I could find is this existing extension, that defines one type of alias. But this satisfies only the first part of my demand.
The use of openapi for the alias is simple, but bot architecture robust.
Introduce an AddressDto to handle the impedance mistmatch beteen public face (API) and internal model