From da42a9e67e02ec9bdcd4eca1e4939d1ac29f73d8 Mon Sep 17 00:00:00 2001 From: Jake Taylor <jake@elixxir.io> Date: Thu, 15 Dec 2022 12:25:54 -0600 Subject: [PATCH] added generic delete helper to utils indexeddb --- indexedDb/utils.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/indexedDb/utils.go b/indexedDb/utils.go index 18904936..7d7e7e6b 100644 --- a/indexedDb/utils.go +++ b/indexedDb/utils.go @@ -147,6 +147,40 @@ func Put(db *idb.Database, objectStoreName string, value js.Value) (*idb.Request return request, nil } +// Delete is a generic helper for removing values from the given [idb.ObjectStore]. +func Delete(db *idb.Database, objectStoreName string, key js.Value) error { + parentErr := errors.Errorf("failed to Delete %s/%s", objectStoreName, key) + + // Prepare the Transaction + txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName) + if err != nil { + return errors.WithMessagef(parentErr, + "Unable to create Transaction: %+v", err) + } + store, err := txn.ObjectStore(objectStoreName) + if err != nil { + return errors.WithMessagef(parentErr, + "Unable to get ObjectStore: %+v", err) + } + + // Perform the operation + deleteRequest, err := store.Delete(key) + if err != nil { + return errors.WithMessagef(parentErr, + "Unable to Get from ObjectStore: %+v", err) + } + + // Wait for the operation to return + ctx, cancel := NewContext() + err = deleteRequest.Await(ctx) + cancel() + if err != nil { + return errors.WithMessagef(parentErr, + "Unable to delete from ObjectStore: %+v", err) + } + return nil +} + // Dump returns the given [idb.ObjectStore] contents to string slice for // testing and debugging purposes. func Dump(db *idb.Database, objectStoreName string) ([]string, error) { -- GitLab