WebDAV: Add "failed" state for files that cannot be synchronized #4827

Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
Michael Mayer
2025-03-18 11:53:56 +01:00
parent 6dce52643c
commit dd18401d82
3 changed files with 8 additions and 3 deletions

View File

@@ -8,6 +8,7 @@ const (
FileSyncNew = "new"
FileSyncIgnore = "ignore"
FileSyncExists = "exists"
FileSyncFailed = "failed"
FileSyncDownloaded = "downloaded"
FileSyncUploaded = "uploaded"
)

View File

@@ -29,7 +29,7 @@ func (w *Sync) relatedDownloads(a entity.Service) (result Downloads, err error)
result = make(Downloads)
maxResults := 1000
// Get remote files from database
// Get list of remote files from database.
files, err := query.FileSyncs(a.ID, entity.FileSyncNew, maxResults)
if err != nil {
@@ -132,6 +132,10 @@ func (w *Sync) download(a entity.Service) (complete bool, err error) {
if err = client.Download(file.RemoteName, localName, false); err != nil {
file.Errors++
file.Error = err.Error()
if file.Errors > a.RetryLimit {
file.Status = entity.FileSyncFailed
}
} else {
log.Infof("sync: downloaded %s from %s", file.RemoteName, clean.Log(a.AccName))
file.Status = entity.FileSyncDownloaded

View File

@@ -57,10 +57,10 @@ func (w *Sync) refresh(a entity.Service) (complete bool, err error) {
f.RemoteDate = file.Date
f.RemoteSize = file.Size
// Select supported types for download
// Select supported types for download.
content := media.FromName(file.Name)
switch content {
case media.Image, media.Sidecar:
case media.Image, media.Sidecar, media.Vector, media.Document, media.Live, media.Animated:
f.Status = entity.FileSyncNew
case media.Raw, media.Video:
if a.SyncRaw {