GODT-1499: Remove message from DB once is not on server any more

This commit is contained in:
Jakub
2022-01-18 18:23:00 +01:00
committed by Jakub Cuth
parent a3d2df9d38
commit 8e0693ab03
9 changed files with 107 additions and 5 deletions

View File

@ -23,6 +23,7 @@ import (
"github.com/ProtonMail/gopenpgp/v2/crypto"
"github.com/ProtonMail/proton-bridge/internal/store/cache"
"github.com/ProtonMail/proton-bridge/pkg/message"
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
bolt "go.etcd.io/bbolt"
)
@ -126,6 +127,7 @@ func (store *Store) getCachedMessage(messageID string) ([]byte, error) {
literal, err := job.GetResult()
if err != nil {
store.checkAndRemoveDeletedMessage(err, messageID)
return nil, err
}
@ -184,8 +186,21 @@ func (store *Store) BuildAndCacheMessage(ctx context.Context, messageID string)
literal, err := job.GetResult()
if err != nil {
store.checkAndRemoveDeletedMessage(err, messageID)
return err
}
return store.cache.Set(store.user.ID(), messageID, literal)
}
func (store *Store) checkAndRemoveDeletedMessage(err error, msgID string) {
if _, ok := err.(pmapi.ErrUnprocessableEntity); !ok {
return
}
l := store.log.WithError(err).WithField("msgID", msgID)
l.Warn("Deleting message which was not found on API")
if deleteErr := store.deleteMessageEvent(msgID); deleteErr != nil {
l.WithField("deleteErr", deleteErr).Error("Failed to delete non-existed API message from DB")
}
}