Reconcile references to remote schemas to models from the root spec #1573
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For #1362
OpenAPI specifications can be spread across different files for maintainability. However this is not great for code-gen which can't recognise when two schema refs refer to the same model. This results in the code-gen using duplicating anonymous structs (which can't easily be used).
I have added a patch to kin upstream (getkin/kin-openapi#945) which identifies when a ref refers to a schema from the root #/components/schemas and makes use of the go model generated from that. I couldn't decide how much logic should exist there without exposing the internals of kin. I'm not sure if it accounts for every edge case, but certainly works for my case and doesn't break any of the existing example specs within this repo.
See f662fa7 which shows the change codegen change:
Of course the kin PR needs looking at first and once merged the go mod replacement directions need removing.