feat: TxnDatastore namespace and keytransform wrappers
This PR introduces namespace and keytransform wrappers for the go-datastore TxnDatastore. This is in order to support a GetMany boxo blockstore implementation that leverages the TxnDatastore for batched reads which, in turn, is ultimately for supporting parallel traversal methods in go-hamt-ipld and go-amt-ipld.
boxo/blockstore PR that uses this: https://github.com/ipfs/boxo/pull/492
Thank you for submitting this PR! A maintainer will be here shortly to review it. We are super grateful, but we are also overloaded! Help us by making sure that:
-
The context for this PR is clear, with relevant discussion, decisions and stakeholders linked/mentioned.
-
Your contribution itself is clear (code comments, self-review for the rest) and in its best form. Follow the code contribution guidelines if they apply.
Getting other community members to do a review would be great help too on complex PRs (you can ask in the chats/forums). If you are unsure about something, just leave us a comment. Next steps:
-
A maintainer will triage and assign priority to this PR, commenting on any missing things and potentially assigning a reviewer for high priority items.
-
The PR gets reviews, discussed and approvals as needed.
-
The PR is merged by maintainers when it has been approved and comments addressed.
We currently aim to provide initial feedback/triaging within two business days. Please keep an eye on any labelling actions, as these will indicate priorities and status of your contribution. We are very grateful for your contribution!
@i-norden I don't see much has changed since last time?
@i-norden I don't see much has changed since last time?
Ah apologies, I embedded but with a named field instead of anonymously so it still had the methods reimplemented but only to fall directly through. Fixed now!
Also embedded ds.Txn into txWrapper, but since most the methods need to apply ConvertKey() the only ones this saved us from reimplementing are Commit() and Discard()
@i-norden I'm not going to have much time in the next few days, but have a look to https://github.com/ipfs/go-datastore/pull/211. I think it does what you want. You don't need to re-implement anything, you just need to wrap stuff in other stuff. If I haven't done something completely wrong, just take that, improving the naming of things and test it a bit.
Thanks @hsanjuan! I appreciate the feedback. I'll take a look and test out that wrapper.
@i-norden is this PR still necessary or were you able to solve it with mentioned wrapper?