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.
Ticket(s): BT-4366
Problem
Create encoder
Solution
I've created the FaunaEncoder class, which provides static methods to convert Java objects to their corresponding Fauna representations. This class handles standard data types (e.g., String, Integer, Long, Double, LocalDateTime, LocalDate, Boolean, and null), as well as custom objects like Document, DocumentReference, NamedDocument, NamedDocumentReference, Module, and Query. The encoding respects Fauna's reserved tags and ensures that complex objects like lists and maps are correctly translated to Fauna queries.
Result
The FaunaEncoder utility class will centralize all encoding logic. With these changes, we will be able to maintain high data integrity when sending queries to Fauna
Testing
The FaunaEncoderTest suite ensures the correctness of encoding operations. It tests the encoding of basic types, complex objects, and edge cases, such as reserved tag conflicts and deep nesting. The suite also verifies the proper encoding of larger data structures and query interpolations. Special attention is given to the encoding of date and time to ensure timezone-awareness is maintained
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.