Skip to content

Commit 3096481

Browse files
authored
Merge pull request #12 from brainiac-five/master
feat: KVS Delete
2 parents 16daa5f + 7db645a commit 3096481

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module github.com/ethersphere/proximity-order-trie
1+
module github.com/brainiac-five/pot
22

33
go 1.24.0
44

kvs.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ type KeyValueStore interface {
2323
Put(ctx context.Context, key, value []byte) error
2424
// Save saves key-value pair to the underlying storage and returns the reference.
2525
Save(ctx context.Context) ([]byte, error)
26+
// Delete takes a key-value pair out of the trie
27+
Delete(ctx context.Context, key []byte) error
2628
}
2729

2830
type SwarmKvs struct {
@@ -88,3 +90,13 @@ func (ps *SwarmKvs) Save(ctx context.Context) ([]byte, error) {
8890
}
8991
return ref, nil
9092
}
93+
94+
// Delete takes a key-value pair out of the trie
95+
func (ps *SwarmKvs) Delete(ctx context.Context, key []byte) error {
96+
err := ps.idx.Delete(ctx, key)
97+
if err != nil {
98+
return fmt.Errorf("failed to delete key-value pair from pot %w", err)
99+
}
100+
return nil
101+
}
102+

kvs_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,28 @@ func TestPotKvs_Save(t *testing.T) {
8585
assert.NoError(t, err)
8686
assert.Equal(t, val2, val)
8787
})
88+
t.Run("Save KVS and delete one item, test that it is deleted, after-save value exist", func(t *testing.T) {
89+
ls := createLs()
90+
kvs1, _ := pot.NewSwarmKvs(ls)
91+
92+
err := kvs1.Put(ctx, key1, val1)
93+
assert.NoError(t, err)
94+
val, err := kvs1.Get(ctx, key1)
95+
assert.NoError(t, err)
96+
assert.Equal(t, val1, val)
97+
ref, err := kvs1.Save(ctx)
98+
assert.NoError(t, err)
99+
err = kvs1.Delete(ctx, key1)
100+
assert.NoError(t, err)
101+
val, err = kvs1.Get(ctx, key1)
102+
assert.Error(t, err, "not found")
103+
104+
// New KVS
105+
kvs2, err := pot.NewSwarmKvsReference(ctx, ls, ref)
106+
assert.NoError(t, err)
107+
108+
val, err = kvs2.Get(ctx, key1)
109+
assert.NoError(t, err)
110+
assert.Equal(t, val1, val)
111+
})
88112
}

0 commit comments

Comments
 (0)