-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Rust-Axum][Breaking Change] Improve the oneOf
model generator
#20336
Open
Victoria-Casasampere-BeeTheData
wants to merge
8
commits into
OpenAPITools:master
Choose a base branch
from
Victoria-Casasampere-BeeTheData:rust-axum-oneOf-enum
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
[Rust-Axum][Breaking Change] Improve the oneOf
model generator
#20336
Victoria-Casasampere-BeeTheData
wants to merge
8
commits into
OpenAPITools:master
from
Victoria-Casasampere-BeeTheData:rust-axum-oneOf-enum
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Comment on lines
+1086
to
+1087
sb.append(", isNull='").append(isNull).append('\''); | ||
sb.append(", hasValidation='").append(hasValidation).append('\''); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was annoying to me, it broke string formatting, which made debugging slightly harder.
Victoria-Casasampere-BeeTheData
changed the title
[Rust-Axum][Breaking Change] Improve the
[Rust-Axum][Breaking Change] Improve the Dec 16, 2024
oneOf
model generator.oneOf
model generator
Victoria-Casasampere-BeeTheData
marked this pull request as ready for review
December 16, 2024 15:28
Victoria-Casasampere-BeeTheData
marked this pull request as ready for review
December 18, 2024 15:33
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR aims to replace the current
oneOf
anddiscriminator
implementation for the rust-axum generator to one that is usable.The idea is to generate an enum for
oneOf
models, with a variant for each specified model. It usesuntagged
when the discriminator is not specified, andtag = "discriminator"
when it is.This implementation however is not the default present in serde, as it lacks serialization for the discriminator field, a field that has to be specified in all
oneOf
variants per OAS, and will fail to serialize when present in the generated structure. The custom implementation allows for the field to be present, and still be able to serialize to the adequate model.Another benefit of the custom serialization is that the variant structure can be serialized directly without the need to convert to the original enum (an option which is still available), which has its benefits when the models have further use outside the API (such as WS messages), and facilitates the use of the
frunk
crate.TODO:
./bin/generate-samples.sh bin/configs/manual/rust-axum-*
freezes, but manually generating each model still works.postProcessOperationsWithModels
to its own method.oneOf
objects...?oneOf
objects.Fixes #20101
PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming7.x.0
minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)