aws / aws-sdk-java-v2

The official AWS SDK for Java - Version 2
Apache License 2.0
2.16k stars 833 forks source link

DynamoDB Enhanced: Support other java.time types #4707

Open chrylis opened 10 months ago

chrylis commented 10 months ago

Describe the feature

As of 2.21.25, the DynamoDB Enhanced client supports out-of-the-box a large portion of the java.time value types, such as Instant, LocalTime, and even ZoneId. However, there are some other types that do not have built-in converters.

Use Case

I am writing a table to track usage for billing purposes, and one of my columns is the billing month, represented in Java code by java.time.YearMonth. The naive string representation is simply "YYYY-mm", which is exactly what I want in my column, but YearMonth can't be mapped without extra configuration.

Proposed Solution

Add converters for all remaining java.time value types, particularly including:

All of these types have simple, clearly-defined ISO-8601 representations that are their native defaults.

Other Information

No response

Acknowledgements

AWS Java SDK version used

2.21.25

JDK version used

openjdk version "11.0.18" 2023-01-17

Operating System and version

Gentoo Linux

debora-ito commented 1 month ago

It looks like converters for MonthDay and Period are already available - https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/package-summary.html

I know this is an ask for out-of-the-box support for those other converters, but as a reminder you can provide your own Attribute Converters - https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/ddb-en-client-adv-features-conversion.html