Add support for multi-attribute keys in DDB Mapper #1752
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.
Issue #
Related to #472
Description of changes
This change adds support for multi-attribute keys in DynamoDB Mapper. Specifically, the
KeySpecclass is now generic overKeyType, which represents key values consisting of 1-4 attributes. Corresponding changes are made in various schema modeling classes to compensate. Additionally,KeyFilterhas been updated to accept aKeyTypefor partition keys and distinctSortKeyExprvalues for up to 4 sort key attributes.When reviewing these changes, I recommend the following order:
KeyTypeand associated implementations/extensions — ADT for key values of 1-4 attributesKeySpecand associated implementations/extensions — updated to be generic overKeyTypeinstead of an unbound typeKItemSchema— updatedKeySpecusagemodelpackage — updated key usage in various modeling types (e.g.,Table,PersistenceSpec, etc.)KeyFilterand its implementation — updated to useKeyTypefor multi-attribute key queriesMapperTypes— various refactors to reference new/updated runtime declarationsSchemaRenderer— various updates to generate updated schemasBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.