mirror of
https://github.com/abhinavxd/libredesk.git
synced 2026-09-22 02:23:32 +00:00
fix: handle non-existent media deletion gracefully and improve logging
This commit is contained in:
+11
-4
@@ -8,6 +8,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/abhinavxd/libredesk/internal/dbutil"
|
||||
@@ -176,8 +177,12 @@ func (m *Manager) GetByModel(modelID int, model string) ([]models.Media, error)
|
||||
func (m *Manager) Delete(name string) error {
|
||||
if err := m.store.Delete(name); err != nil {
|
||||
m.lo.Error("error deleting media from store", "error", err)
|
||||
return envelope.NewError(envelope.GeneralError, "Error deleting media from store", nil)
|
||||
// If the file does not exist, ignore the error.
|
||||
if !errors.Is(err, os.ErrNotExist) {
|
||||
return envelope.NewError(envelope.GeneralError, "Error deleting media from store", nil)
|
||||
}
|
||||
}
|
||||
// Delete the media record from the database.
|
||||
if _, err := m.queries.Delete.Exec(name); err != nil {
|
||||
m.lo.Error("error deleting media from db", "error", err)
|
||||
return envelope.NewError(envelope.GeneralError, "Error deleting media from DB", nil)
|
||||
@@ -192,8 +197,8 @@ func (m *Manager) DeleteUnlinkedMedia(ctx context.Context) {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-time.After(2 * time.Hour):
|
||||
m.lo.Info("deleting unlinked message media")
|
||||
case <-time.After(12 * time.Hour):
|
||||
m.lo.Info("starting periodic deletion of unlinked media")
|
||||
if err := m.deleteUnlinkedMessageMedia(); err != nil {
|
||||
m.lo.Error("error deleting unlinked media", "error", err)
|
||||
}
|
||||
@@ -209,8 +214,10 @@ func (m *Manager) deleteUnlinkedMessageMedia() error {
|
||||
return err
|
||||
}
|
||||
for _, mm := range media {
|
||||
m.lo.Debug("deleting media not linked to any message", "media_id", mm.ID)
|
||||
if err := m.Delete(mm.UUID); err != nil {
|
||||
return err
|
||||
m.lo.Error("error deleting unlinked media", "error", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user