fix(server): clean up uploaded artist images during GC
When artists are purged during garbage collection, any custom uploaded cover images were left orphaned on disk. Modified purgeEmpty() to query for uploaded_image filenames before the bulk DELETE, then remove the corresponding files from disk afterwards. Image cleanup is best-effort to avoid failing the GC if a file is already missing or inaccessible. Also populated album_artists entries in the persistence test suite setup to reflect the actual album-artist relationships from test data, ensuring purgeEmpty() doesn't inadvertently delete shared test artists.
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/Masterminds/squirrel"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
"github.com/navidrome/navidrome/conf"
|
||||
"github.com/navidrome/navidrome/db"
|
||||
@@ -211,6 +212,27 @@ var _ = BeforeSuite(func() {
|
||||
}
|
||||
}
|
||||
|
||||
// Populate album_artists based on the AlbumArtistID relationships in testAlbums
|
||||
artistIDs := map[string]bool{}
|
||||
for _, a := range testArtists {
|
||||
artistIDs[a.ID] = true
|
||||
}
|
||||
for i := range testAlbums {
|
||||
a := testAlbums[i]
|
||||
if a.AlbumArtistID == "" || !artistIDs[a.AlbumArtistID] {
|
||||
continue
|
||||
}
|
||||
_, err := alr.executeSQL(squirrel.Insert("album_artists").SetMap(map[string]any{
|
||||
"album_id": a.ID,
|
||||
"artist_id": a.AlbumArtistID,
|
||||
"role": "artist",
|
||||
"sub_role": "",
|
||||
}))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
mr := NewMediaFileRepository(ctx, conn)
|
||||
for i := range testSongs {
|
||||
err := mr.Put(&testSongs[i])
|
||||
|
||||
Reference in New Issue
Block a user