Abstract KV layer options to eliminate dynamic casts to FDBTransaction #119
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.
The use of
dynamic_castcan bypass the common functionality defined by the interface classes (IReadOnlyTransactionandIReadWriteTransaction) and instead rely on specific implementation details. This might not be ideal, as it reduces abstraction and increases coupling to a particular implementation. To address this, I attempted to define common option-setting functions.I considered two approaches:
setOption(TransactionOption option, std::string_view value)that can handle all options.enableStaleReadandsetPriority.I chose the second approach because it assumes there are not many options to set, and this method is clearer and type-safe compared to passing raw value strings.
Thank you for taking the time to review. Feel free to close the MR if it is too small or not helpful.