1
Fork 0

Optimize user's album filter. #705 (#962)

This commit is contained in:
Googol Lee 2024-06-27 21:21:09 +02:00 committed by GitHub
parent f79d379e38
commit 1cd34109b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 1 additions and 11 deletions

View File

@ -165,18 +165,8 @@ func (user *User) FillAlbums(db *gorm.DB) error {
} }
func (user *User) OwnsAlbum(db *gorm.DB, album *Album) (bool, error) { func (user *User) OwnsAlbum(db *gorm.DB, album *Album) (bool, error) {
if err := user.FillAlbums(db); err != nil {
return false, err
}
albumIDs := make([]int, 0)
for _, a := range user.Albums {
albumIDs = append(albumIDs, a.ID)
}
filter := func(query *gorm.DB) *gorm.DB { filter := func(query *gorm.DB) *gorm.DB {
return query.Where("id IN (?)", albumIDs) return query.Where("EXISTS (SELECT 1 FROM user_albums WHERE user_albums.user_id = ? AND user_albums.album_id = id LIMIT 1)", user.ID)
} }
ownedParents, err := album.GetParents(db, filter) ownedParents, err := album.GetParents(db, filter)