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

Implement support for @caseNameAliases annotation #381

Closed
jdegoes opened this issue Oct 24, 2022 · 0 comments · Fixed by #426
Closed

Implement support for @caseNameAliases annotation #381

jdegoes opened this issue Oct 24, 2022 · 0 comments · Fixed by #426
Assignees

Comments

@jdegoes
Copy link
Member

jdegoes commented Oct 24, 2022

After #203 is completed, then each specified annotation may be implemented for each of the supported codecs for which it makes sense to support the annotation.

This ticket is to implement the @caseNameAliases annotation. This annotation, which may be applied to any case of an enumeration (subtype of a sealed trait), contains a list of aliases the case is sometimes known by, which is a hint to the deserialization for different protocols to check for the case not only under its primary name, but also under its alternate names.

For example, maybe it may be the case that the CreditCard of PaymentMethod is usually stored in a field CreditCard, but occassionally appears under credit_card. Adding this annotation is a hint to the deserialization process to try not just CreditCard, but also, credit_card.

The main place where this new annotation should be used is in the different protocols that ZIO Schema supports. For example, the zio-schema-json protocol, which has serialization / deserialization in the JSON protocol.

ZIO Schema already captures annotations, so it is only necessary to look at the annotations and ensure that serialization / deserialization respects them in every protocol where the annotation makes sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

2 participants