1
Fork 0

Properly add new user as owner

when scanning albums already owned by other users
This commit is contained in:
viktorstrate 2021-01-26 15:30:21 +01:00
parent a4f5d26197
commit 404f1898c2
No known key found for this signature in database
GPG Key ID: 3F855605109C1E8A
2 changed files with 18 additions and 4 deletions

View File

@ -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"))
}
}

View File

@ -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)