From de0589761e23f95ed680cbe2e0c418b42b388b99 Mon Sep 17 00:00:00 2001 From: kalipso Date: Sun, 16 Mar 2025 23:26:20 +0100 Subject: [PATCH] handle error when deleting non existing key --- cmd/ppass/ppass.go | 1 + internal/rpc/rpc.go | 3 +++ internal/storage/vault.go | 12 +++++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cmd/ppass/ppass.go b/cmd/ppass/ppass.go index 7713d29..dffb321 100644 --- a/cmd/ppass/ppass.go +++ b/cmd/ppass/ppass.go @@ -248,6 +248,7 @@ var deleteCmd = &cobra.Command{ if err != nil { Logger.Error(err) + return } if *success { diff --git a/internal/rpc/rpc.go b/internal/rpc/rpc.go index 655f658..968faa7 100644 --- a/internal/rpc/rpc.go +++ b/internal/rpc/rpc.go @@ -140,6 +140,9 @@ func (t *Query) Delete(np *VaultService, success *bool) error { err := val.Delete(np.Service) if err != nil { *success = false + if err == storage.ErrNotFound { + return nil + } return err } diff --git a/internal/storage/vault.go b/internal/storage/vault.go index 81a50de..6e686c8 100644 --- a/internal/storage/vault.go +++ b/internal/storage/vault.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "time" + "errors" "github.com/ipfs/go-datastore/query" pubsub "github.com/libp2p/go-libp2p-pubsub" @@ -18,6 +19,8 @@ import ( . "github.com/k4lipso/pentapass/internal/log" ) +var ErrNotFound error = errors.New("Not found") + type Vault struct { ID string Datastore *crdt.Datastore @@ -73,8 +76,15 @@ func (n *Vault) Put(k string, v string) error { } func (n *Vault) Delete(k string) error { + _, err := n.GetPassword(k) + + if err != nil { + return ErrNotFound + } + key := ds.NewKey(k) - err := n.Datastore.Delete(n.ctx, key) + + err = n.Datastore.Delete(n.ctx, key) if err != nil { printErr(err)