forked from Silverfish/proton-bridge
GODT-1499: Remove message from DB once is not on server any more
This commit is contained in:
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user