fix: handle errors when attempting to delete associated shares

pull/3896/head
Stavros Tsioulis 2025-07-02 22:29:29 +03:00
parent 49698b3df0
commit 35950369ef
3 changed files with 16 additions and 7 deletions

View File

@ -73,7 +73,10 @@ func resourceDeleteHandler(fileCache FileCache) handleFunc {
return errToStatus(err), err return errToStatus(err), err
} }
d.store.Share.DeleteWithPathPrefix(file.Path) err = d.store.Share.DeleteWithPathPrefix(file.Path)
if err != nil {
fmt.Println("Warning: Error(s) occurred while deleting associated shares with file:" + err.Error())
}
// delete thumbnails // delete thumbnails
err = delThumbs(r.Context(), fileCache, file) err = delThumbs(r.Context(), fileCache, file)

View File

@ -15,7 +15,7 @@ type StorageBackend interface {
Gets(path string, id uint) ([]*Link, error) Gets(path string, id uint) ([]*Link, error)
Save(s *Link) error Save(s *Link) error
Delete(hash string) error Delete(hash string) error
DeleteWithPathPrefix(path string) DeleteWithPathPrefix(path string) error
} }
// Storage is a storage. // Storage is a storage.
@ -120,6 +120,6 @@ func (s *Storage) Delete(hash string) error {
return s.back.Delete(hash) return s.back.Delete(hash)
} }
func (s *Storage) DeleteWithPathPrefix(path string) { func (s *Storage) DeleteWithPathPrefix(path string) error {
s.back.DeleteWithPathPrefix(path) return s.back.DeleteWithPathPrefix(path)
} }

View File

@ -76,10 +76,16 @@ func (s shareBackend) Delete(hash string) error {
return err return err
} }
func (s shareBackend) DeleteWithPathPrefix(pathPrefix string) { func (s shareBackend) DeleteWithPathPrefix(pathPrefix string) error {
var links []share.Link var links []share.Link
s.db.Prefix("Path", pathPrefix, &links) s.db.Prefix("Path", pathPrefix, &links)
for _, link := range links { if err := s.db.Prefix("Path", pathPrefix, &links); err != nil {
s.db.DeleteStruct(&share.Link{Hash: link.Hash}) return err
} }
var err error
for _, link := range links {
err = errors.Join(err, s.db.DeleteStruct(&share.Link{Hash: link.Hash}))
}
return err
} }