Update oldest/newest when photo date is updated
This commit is contained in:
parent
5676174e41
commit
c5523d650d
2 changed files with 55 additions and 5 deletions
|
@ -155,8 +155,11 @@ func AddPhotoToUserAlbums(photoUid string, albums []string, userUid string) (err
|
|||
|
||||
if before := takenAt.Before(albumOldest); before {
|
||||
albumOldest = takenAt
|
||||
log.Println("test")
|
||||
} else if after := takenAt.After(albumNewest); after {
|
||||
} else if zero := albumOldest.IsZero(); zero {
|
||||
albumOldest = takenAt
|
||||
}
|
||||
|
||||
if after := takenAt.After(albumNewest); after {
|
||||
albumNewest = takenAt
|
||||
}
|
||||
}
|
||||
|
@ -887,7 +890,8 @@ func (m *Album) RemovePhotos(UIDs []string) (removed PhotoAlbums) {
|
|||
// update the oldest of the album
|
||||
updatedAlbumOldest = oldestPhoto.TakenAt
|
||||
}
|
||||
} else if isNewest := takenAt.Equal(m.AlbumNewest); isNewest {
|
||||
}
|
||||
if isNewest := takenAt.Equal(m.AlbumNewest); isNewest {
|
||||
if newestPhoto, err := AlbumOldestOrNewest(m.AlbumUID, false); err == nil {
|
||||
// update the newest of the album
|
||||
updatedAlbumNewest = newestPhoto.TakenAt
|
||||
|
@ -936,9 +940,30 @@ func AlbumOldestOrNewest(albumUid string, isOldest bool) (Photo, error) {
|
|||
),
|
||||
)
|
||||
|
||||
if err := stmt.First(&photo).Error; err != nil {
|
||||
return Photo{}, err
|
||||
if r := stmt.First(&photo); r.RecordNotFound() {
|
||||
return Photo{}, nil
|
||||
} else if r.Error != nil {
|
||||
return Photo{}, r.Error
|
||||
}
|
||||
|
||||
return photo, nil
|
||||
}
|
||||
|
||||
func AlbumsOfPhoto(photoUid string) ([]Album, error) {
|
||||
var albums []Album
|
||||
|
||||
stmt := Db().Table("albums").Select("albums.*").Joins(
|
||||
"JOIN photos_albums ON albums.album_uid = "+
|
||||
"photos_albums.album_uid",
|
||||
).Joins("JOIN photos ON photos_albums.photo_uid = photos.photo_uid").
|
||||
Where("photos.photo_uid = ?", photoUid).
|
||||
Where("photos_albums.hidden = 0")
|
||||
|
||||
if r := stmt.Find(&albums); r.RecordNotFound() {
|
||||
return albums, nil
|
||||
} else if r.Error != nil {
|
||||
return albums, r.Error
|
||||
}
|
||||
|
||||
return albums, nil
|
||||
}
|
||||
|
|
|
@ -127,4 +127,29 @@ func (m *Photo) UpdateDateFields() {
|
|||
Where("photo_id = ? AND photo_taken_at <> ?", m.ID, m.TakenAtLocal).
|
||||
Updates(File{PhotoTakenAt: m.TakenAtLocal}).Error,
|
||||
)
|
||||
|
||||
// update the oldest or newest date of the albums of this photo, if needed
|
||||
if albums, err := AlbumsOfPhoto(m.PhotoUID); err == nil {
|
||||
for _, album := range albums {
|
||||
albumOldest := album.AlbumOldest
|
||||
albumNewest := album.AlbumNewest
|
||||
takenAt := m.TakenAt
|
||||
if before := takenAt.Before(albumOldest); before {
|
||||
albumOldest = takenAt
|
||||
} else if after := takenAt.After(albumNewest); after {
|
||||
albumNewest = takenAt
|
||||
}
|
||||
|
||||
// Refresh updated timestamp and album oldest/newest values.
|
||||
if !albumOldest.Equal(album.AlbumOldest) || !albumNewest.Equal(album.AlbumNewest) {
|
||||
if err := UpdateAlbum(
|
||||
album.AlbumUID, Values{
|
||||
"albumOldest": albumOldest, "albumNewest": albumNewest,
|
||||
},
|
||||
); err != nil {
|
||||
log.Errorf("album: %s (update %s)", err.Error(), album)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue