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" FileSyncNew = "new"
FileSyncIgnore = "ignore" FileSyncIgnore = "ignore"
FileSyncExists = "exists" FileSyncExists = "exists"
FileSyncFailed = "failed"
FileSyncDownloaded = "downloaded" FileSyncDownloaded = "downloaded"
FileSyncUploaded = "uploaded" FileSyncUploaded = "uploaded"
) )

View File

@@ -29,7 +29,7 @@ func (w *Sync) relatedDownloads(a entity.Service) (result Downloads, err error)
result = make(Downloads) result = make(Downloads)
maxResults := 1000 maxResults := 1000
// Get remote files from database // Get list of remote files from database.
files, err := query.FileSyncs(a.ID, entity.FileSyncNew, maxResults) files, err := query.FileSyncs(a.ID, entity.FileSyncNew, maxResults)
if err != nil { 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 { if err = client.Download(file.RemoteName, localName, false); err != nil {
file.Errors++ file.Errors++
file.Error = err.Error() file.Error = err.Error()
if file.Errors > a.RetryLimit {
file.Status = entity.FileSyncFailed
}
} else { } else {
log.Infof("sync: downloaded %s from %s", file.RemoteName, clean.Log(a.AccName)) log.Infof("sync: downloaded %s from %s", file.RemoteName, clean.Log(a.AccName))
file.Status = entity.FileSyncDownloaded 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.RemoteDate = file.Date
f.RemoteSize = file.Size f.RemoteSize = file.Size
// Select supported types for download // Select supported types for download.
content := media.FromName(file.Name) content := media.FromName(file.Name)
switch content { switch content {
case media.Image, media.Sidecar: case media.Image, media.Sidecar, media.Vector, media.Document, media.Live, media.Animated:
f.Status = entity.FileSyncNew f.Status = entity.FileSyncNew
case media.Raw, media.Video: case media.Raw, media.Video:
if a.SyncRaw { if a.SyncRaw {