Skip to content
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

Use oneOf for enums when possible #108

Merged
merged 2 commits into from
Sep 26, 2021
Merged

Use oneOf for enums when possible #108

merged 2 commits into from
Sep 26, 2021

Conversation

ahl
Copy link
Contributor

@ahl ahl commented Sep 19, 2021

Fixes #98

I did some minor clean up to the test infra to make the output easier to understand

@GREsau
Copy link
Owner

GREsau commented Sep 26, 2021

Looks good to me, thanks for the PR!

This implementation tracks unique_names - I assume that's just in case someone gives the same name to multiple variants? e.g.

enum MyEnum {
    #[serde(rename = "Two")]
    One,
    Two,
}

That feels like a silly thing for someone to do, but I guess there's not really any harm in accounting for it.

@GREsau GREsau merged commit 0a1200b into GREsau:master Sep 26, 2021
@ahl ahl deleted the one-of branch September 27, 2021 16:18
@ahl
Copy link
Contributor Author

ahl commented Sep 27, 2021

Yes, that's right. And perhaps I should have left a comment to that effect. Agreed that it's a border-line hostile thing for someone to do, but it's also not that hard to handle with some grace.

sanlee42 added a commit to sanlee42/schemars that referenced this pull request Jan 2, 2023
* Read #[validate(...)] attributes

* Handle required flattened Option fields

* Refactor out `add_schema_as_property`

* Process validation attributes in newtype structs

* Process validation attributes in tuple structs

* Refactor out "local_id" for type definitions

* Refactoring

* Support inline regex

* Allow setting validation attributes via #[schemars(...)]

* Add some doc comments

* Fix doc test

* Emit compilation errors for duplicate validation attributes

* Fix indexmap tests for rust 1.37

* upgrade diem dep (#1)

* Update changelog and docs

* Add newline to attributes docs

* v0.8.4

* Allow empty #[validate] attributes.

Fixes GREsau#109

* v0.8.5

* Use oneOf for enums when possible (GREsau#108)

* v0.8.6

* Correct latest changelog entry

* update diem dep

* Implement JsonSchema on EnumSet type

* update diem dep

* Upgrade move deps (#3)

* [deps] Upgrade move types dep.

* Update examples after 0a1200b

* Allow non-Serialize default values.

Default values that don't implement Serialize are now ignored, rather than causing a compile error.
This is done by simulating specialization using a technique copied from Rocket:
https://github.com/SergioBenitez/Rocket/blob/5ebefa97c992c37bdc476299304a339d429a43fc/core/lib/src/sentinel.rs#L391-L445

Fixes GREsau#115

* v0.8.7

* update diem deps

* Add example for optional dependency in readme

Based on https://github.com/GREsau/schemars/pull/118/files

* Add support for rust_decimal and bigdecimal (GREsau#101)

* Document new optional dependencies

* Internally tagged enums don't honor deny_unknown_fields as precisely as
they might.

flatten doesn't act quite as intended with regard to
additional_properties

* v0.8.8

* update diem deps to latest

* update diem deps

* Update dep

* update diem deps

* Update rust toolchain and dep

* update diem dep

* Update diem dep

* [crypto] Update dependency crypto to use starcoinorg/starcoin-crypto repo (#5)

* [crypto] Update dependency crypto to use starcoinorg/starcoin-crypto repo.

* [deps] Update move-core-types to starcoinorg/move

* Remove diem types

Co-authored-by: Graham Esau <gesau@hotmail.co.uk>
Co-authored-by: lerencao <funfriendcjf@gmail.com>
Co-authored-by: Graham Esau <graham.esau@vonage.com>
Co-authored-by: Adam Leventhal <adam.leventhal@gmail.com>
Co-authored-by: Matt Campbell <mattcampbell@pobox.com>
Co-authored-by: jolestar <jolestar@gmail.com>
Co-authored-by: timando <github@timando.net>
Co-authored-by: Adam H. Leventhal <ahl@oxide.computer>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

could certain schemas derived from enums more precisely use oneOf?
2 participants