Skip to content

feat: add NaturalUnicodeDelimitedTupleAttribute#58

Open
ryancausey wants to merge 1 commit intolyft:masterfrom
ryancausey:feat/add-natural-unicode-delimited-tuple
Open

feat: add NaturalUnicodeDelimitedTupleAttribute#58
ryancausey wants to merge 1 commit intolyft:masterfrom
ryancausey:feat/add-natural-unicode-delimited-tuple

Conversation

@ryancausey
Copy link
Copy Markdown

This adds a new field, NaturalUnicodeDelimitedTupleAttribute that extends UnicodeDelimitedTupleAttribute with datetime object handling and also implements zero padding of integers and floats. The motivation was the need for natural sort order of composite sort keys that contain a number element within the key. The default lexicographical sorting would put 10 before 2 when these numbers are serialized and stored in DynamoDB as strings. By adding leading 0s to pad the numbers when they are serialized to strings, we can force a natural sort order where "02" sorts before "10". This also adds logic to store any datetime objects encountered in a ISO8601 formatted string to take advantage of that format's lexicographical sorting properties. This was done to also allow proper sorting of a composite key based on datetime.

Closes #57

This adds a new field, NaturalUnicodeDelimitedTupleAttribute that
extends UnicodeDelimitedTupleAttribute with datetime object handling and
also implements zero padding of integers and floats. The motivation was
the need for natural sort order of composite sort keys that contain a
number element within the key. The default lexicographical sorting would
put 10 before 2 when these numbers are serialized and stored in DynamoDB
as strings. By adding leading 0s to pad the numbers when they are
serialized to strings, we can force a natural sort order where "02"
sorts before "10". This also adds logic to store any datetime objects
encountered in a ISO8601 formatted string to take advantage of that
format's lexicographical sorting properties. This was done to also allow
proper sorting of a composite key based on datetime.
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.

UnicodeDelimitedTupleAttribute does not support datetime.datetime objects

1 participant