From a07932ee7e70d25a381e2475148adf7a89feea70 Mon Sep 17 00:00:00 2001
From: Jake Taylor <jake@elixxir.io>
Date: Wed, 1 Mar 2023 15:24:28 -0600
Subject: [PATCH] port unique constraint error into dm

---
 indexedDb/impl/channels/implementation.go | 3 +--
 indexedDb/impl/dm/implementation.go       | 4 +++-
 indexedDb/impl/utils.go                   | 3 +++
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go
index a31a49bd..6ca435ef 100644
--- a/indexedDb/impl/channels/implementation.go
+++ b/indexedDb/impl/channels/implementation.go
@@ -417,8 +417,7 @@ func (w *wasmModel) receiveHelper(
 
 	// Store message to database
 	result, err := impl.Put(w.db, messageStoreName, messageObj)
-	if err != nil && !strings.Contains(err.Error(),
-		"at least one key does not satisfy the uniqueness requirements") {
+	if err != nil && !strings.Contains(err.Error(), impl.ErrUniqueConstraint) {
 		// Only return non-unique constraint errors so that the case
 		// below this one can be hit and handle duplicate entries properly.
 		return 0, errors.Errorf("Unable to put Message: %+v", err)
diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go
index 80b61d93..6765eaa3 100644
--- a/indexedDb/impl/dm/implementation.go
+++ b/indexedDb/impl/dm/implementation.go
@@ -288,7 +288,9 @@ func (w *wasmModel) receiveHelper(
 
 	// Store message to database
 	result, err := impl.Put(w.db, messageStoreName, messageObj)
-	if err != nil {
+	if err != nil && !strings.Contains(err.Error(), impl.ErrUniqueConstraint) {
+		// Only return non-unique constraint errors so that the case
+		// below this one can be hit and handle duplicate entries properly.
 		return 0, errors.Errorf("Unable to put Message: %+v", err)
 	}
 
diff --git a/indexedDb/impl/utils.go b/indexedDb/impl/utils.go
index 0fdb2315..93446fc1 100644
--- a/indexedDb/impl/utils.go
+++ b/indexedDb/impl/utils.go
@@ -30,6 +30,9 @@ const (
 
 	// ErrDoesNotExist is an error string for got undefined on Get operations.
 	ErrDoesNotExist = "result is undefined"
+
+	// ErrUniqueConstraint is an error string for failed uniqueness inserts.
+	ErrUniqueConstraint = "at least one key does not satisfy the uniqueness requirements"
 )
 
 // NewContext builds a context for indexedDb operations.
-- 
GitLab