Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(collections): add alternative value codec #16773

Merged
merged 7 commits into from
Jul 4, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix some things
  • Loading branch information
unknown unknown committed Jun 29, 2023
commit 6942aa9e1ec9977b58ca90dcddd8ecccf1c8c4d5
2 changes: 1 addition & 1 deletion collections/indexes/reverse_pair.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (i *ReversePair[K1, K2, Value]) Unreference(ctx context.Context, pk collect
func (i *ReversePair[K1, K2, Value]) Walk(
ctx context.Context,
ranger collections.Ranger[collections.Pair[K2, K1]],
walkFunc func(indexedKey K2, indexingKey K1) (stop bool, err error),
walkFunc func(indexingKey K2, indexedKey K1) (stop bool, err error),
) error {
return i.refKeys.Walk(ctx, ranger, func(key collections.Pair[K2, K1]) (bool, error) {
return walkFunc(key.K1(), key.K2())
Expand Down
21 changes: 13 additions & 8 deletions collections/indexes/reverse_pair_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,13 @@ func TestReversePair(t *testing.T) {
func TestUncheckedReversePair(t *testing.T) {
sk, ctx := deps()
sb := collections.NewSchemaBuilder(sk)
// we create an indexed map that maps balances, which are saved as
// key: Pair[Address, Denom]
// value: Amount
prefix := collections.NewPrefix("prefix")
keyCodec := collections.PairKeyCodec(collections.StringKey, collections.StringKey)

uncheckedRp := NewReversePair[Amount](sb, collections.NewPrefix("denom_index"), "denom_index", keyCodec, WithReversePairUncheckedValue())
rp := NewReversePair[Amount](sb, collections.NewPrefix("denom_index"), "denom_index", keyCodec)
uncheckedRp := NewReversePair[Amount](sb, prefix, "denom_index", keyCodec, WithReversePairUncheckedValue())
rp := NewReversePair[Amount](sb, prefix, "denom_index", keyCodec)

rawKey, err := collections.EncodeKeyWithPrefix(collections.NewPrefix("denom_index"), uncheckedRp.KeyCodec(), collections.Join("address1", "atom"))
rawKey, err := collections.EncodeKeyWithPrefix(prefix, uncheckedRp.KeyCodec(), collections.Join("atom", "address1"))
require.NoError(t, err)

require.NoError(t, sk.OpenKVStore(ctx).Set(rawKey, []byte("i should not be here")))
Expand All @@ -92,8 +90,15 @@ func TestUncheckedReversePair(t *testing.T) {

// unchecked reverse pair succeeds
err = uncheckedRp.Walk(ctx, nil, func(indexingKey string, indexedKey string) (stop bool, err error) {
t.Log(indexingKey, indexedKey)
return false, nil
require.Equal(t, "atom", indexingKey)
return true, nil
})
require.NoError(t, err)

// unchecked reverse pair lazily updates
err = uncheckedRp.Reference(ctx, collections.Join("address1", "atom"), 0, nil)
require.NoError(t, err)
rawValue, err := sk.OpenKVStore(ctx).Get(rawKey)
require.NoError(t, err)
require.Equal(t, []byte{}, rawValue)
}