diff --git a/api/scanner/cleanup_media.go b/api/scanner/cleanup_media.go index 58186530..9abcdf02 100644 --- a/api/scanner/cleanup_media.go +++ b/api/scanner/cleanup_media.go @@ -23,7 +23,7 @@ func CleanupMedia(db *gorm.DB, albumId int, albumMedia []*models.Media) []error // Select media from database that was not found on hard disk if len(albumMedia) > 0 { - query.Where("NOT id IN ?", albumMediaIds) + query.Where("NOT id IN (?)", albumMediaIds) } if err := query.Find(&mediaList).Error; err != nil { @@ -45,7 +45,7 @@ func CleanupMedia(db *gorm.DB, albumId int, albumMedia []*models.Media) []error } if len(mediaIDs) > 0 { - if err := db.Where("id IN ?", mediaIDs).Delete(models.Media{}).Error; err != nil { + if err := db.Where("id IN (?)", mediaIDs).Delete(models.Media{}).Error; err != nil { deleteErrors = append(deleteErrors, errors.Wrap(err, "delete old media from database")) } } diff --git a/api/scanner/scanner_user.go b/api/scanner/scanner_user.go index 0b3f081e..06fa1b15 100644 --- a/api/scanner/scanner_user.go +++ b/api/scanner/scanner_user.go @@ -27,7 +27,7 @@ func findAlbumsForUser(db *gorm.DB, user *models.User, album_cache *AlbumScanner } var userRootAlbums []*models.Album - if err := db.Where("id IN (?)", userAlbumIDs).Where("parent_album_id IS NULL").Find(&userRootAlbums).Error; err != nil { + if err := db.Where("id IN (?)", userAlbumIDs).Where("parent_album_id IS NULL OR parent_album_id NOT IN (?)", userAlbumIDs).Find(&userRootAlbums).Error; err != nil { return nil, []error{err} } @@ -94,7 +94,7 @@ func findAlbumsForUser(db *gorm.DB, user *models.User, album_cache *AlbumScanner if albumParent != nil { albumParentID = &albumParent.ID - if err := db.Model(&albumParent).Association("Owners").Find(&parentOwners); err != nil { + if err := tx.Model(&albumParent).Association("Owners").Find(&parentOwners); err != nil { return err } } @@ -114,6 +114,20 @@ func findAlbumsForUser(db *gorm.DB, user *models.User, album_cache *AlbumScanner } } else { album = &albumResult[0] + + // Add user as an owner of the album if not already + var userAlbumOwner []models.User + if err := tx.Model(&album).Association("Owners").Find(&userAlbumOwner, "user_albums.user_id = ?", user.ID); err != nil { + return err + } + if len(userAlbumOwner) == 0 { + newUser := models.User{} + newUser.ID = user.ID + if err := tx.Model(&album).Association("Owners").Append(&newUser); err != nil { + return err + } + } + } userAlbums = append(userAlbums, album)