Skip to content
Snippets Groups Projects
Commit 19ddcd63 authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

Do not error out when this message already exists inside the DB. Instead, set...

Do not error out when this message already exists inside the DB. Instead, set the ID and re-attempt as an upsert.
parent 5a9175f5
No related branches found
No related tags found
2 merge requests!129Do not error out when this message already exists inside the DB. Instead, set...,!109Project/haven beta
......@@ -435,6 +435,22 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) {
// Store message to database
msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj)
if err != nil {
// Do not error out when this message already exists inside
// the DB. Instead, set the ID and re-attempt as an upsert.
if msg.ID == 0 { // always error out when not an insert attempt
msgID, inErr := message.UnmarshalID(msg.MessageID)
if inErr == nil {
jww.WARN.Printf("upsertMessage duplicate: %+v",
err)
existingMsg, inErr := w.GetMessage(msgID)
if inErr == nil && existingMsg.UUID != 0 {
msg.ID = existingMsg.UUID
return w.upsertMessage(msg)
}
jww.ERROR.Printf("upsertMessage no UUID: %+v",
inErr)
}
}
return 0, errors.Errorf("Unable to put Message: %+v\n%s",
err, newMessageJson)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment