Fix bug in handling deleted entry

This commit is contained in:
Neeraj Gupta 2024-01-05 11:09:05 +05:30
parent e8558b17f5
commit f775681162

View file

@ -32,18 +32,17 @@ func (c *ClICtrl) syncFiles(ctx context.Context, account model.Account) error {
model.SortAlbumFileEntry(entries) model.SortAlbumFileEntry(entries)
defer utils.TimeTrack(time.Now(), "process_files") defer utils.TimeTrack(time.Now(), "process_files")
var albumDiskInfo *albumDiskInfo var albumDiskInfo *albumDiskInfo
for i, entry := range entries { for i, albumFileEntry := range entries {
if entry.SyncedLocally { if albumFileEntry.SyncedLocally {
continue continue
} }
albumInfo, ok := albumIDToMetaMap[entry.AlbumID] albumInfo, ok := albumIDToMetaMap[albumFileEntry.AlbumID]
if !ok { if !ok {
log.Printf("Album %d not found in local metadata", entry.AlbumID) log.Printf("Album %d not found in local metadata", albumFileEntry.AlbumID)
continue continue
} }
if albumInfo.IsDeleted { if albumInfo.IsDeleted {
putErr := c.DeleteAlbumEntry(ctx, entry) putErr := c.DeleteAlbumEntry(ctx, albumFileEntry)
if putErr != nil { if putErr != nil {
return putErr return putErr
} }
@ -56,7 +55,7 @@ func (c *ClICtrl) syncFiles(ctx context.Context, account model.Account) error {
return err return err
} }
} }
fileBytes, err := c.GetValue(ctx, model.RemoteFiles, []byte(fmt.Sprintf("%d", entry.FileID))) fileBytes, err := c.GetValue(ctx, model.RemoteFiles, []byte(fmt.Sprintf("%d", albumFileEntry.FileID)))
if err != nil { if err != nil {
return err return err
} }
@ -67,7 +66,7 @@ func (c *ClICtrl) syncFiles(ctx context.Context, account model.Account) error {
return err return err
} }
log.Printf("[%d/%d] Sync %s for album %s", i, len(entries), existingEntry.GetTitle(), albumInfo.AlbumName) log.Printf("[%d/%d] Sync %s for album %s", i, len(entries), existingEntry.GetTitle(), albumInfo.AlbumName)
err = c.downloadEntry(ctx, albumDiskInfo, *existingEntry, entry) err = c.downloadEntry(ctx, albumDiskInfo, *existingEntry, albumFileEntry)
if err != nil { if err != nil {
if errors.Is(err, model.ErrDecryption) { if errors.Is(err, model.ErrDecryption) {
continue continue
@ -81,7 +80,15 @@ func (c *ClICtrl) syncFiles(ctx context.Context, account model.Account) error {
} }
} }
} else { } else {
log.Fatalf("File %d not found in remote", entry.FileID) // file metadata is missing in the localDB
if albumFileEntry.IsDeleted {
delErr := c.DeleteAlbumEntry(ctx, albumFileEntry)
if delErr != nil {
log.Fatalf("Error deleting album entry %d (deleted: %v) %v", albumFileEntry.FileID, albumFileEntry.IsDeleted, delErr)
}
} else {
log.Fatalf("Failed to find entry in db for file %d (deleted: %v)", albumFileEntry.FileID, albumFileEntry.IsDeleted)
}
} }
} }