ipfs / go-datastore

key-value datastore interfaces
MIT License
228 stars 64 forks source link

feat: TxnDatastore namespace and keytransform wrappers #210

Open i-norden opened 11 months ago

i-norden commented 11 months ago

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

welcome[bot] commented 11 months ago

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:

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:

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!

hsanjuan commented 10 months ago

@i-norden I don't see much has changed since last time?

i-norden commented 10 months ago

@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!

i-norden commented 10 months ago

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()

hsanjuan commented 10 months ago

@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.

i-norden commented 10 months ago

Thanks @hsanjuan! I appreciate the feedback. I'll take a look and test out that wrapper.

lidel commented 4 months ago

@i-norden is this PR still necessary or were you able to solve it with mentioned wrapper?