diff --git a/src/tagger.rs b/src/tagger.rs index 0fd6c1e..0f7514b 100644 --- a/src/tagger.rs +++ b/src/tagger.rs @@ -105,18 +105,23 @@ pub async fn tag_track( (details, best_release) }; - // Upsert primary artist with MusicBrainz ID - let artist_id = match &details.artist_mbid { - Some(mbid) => Some( - queries::artists::upsert(conn, &details.artist, Some(mbid)) - .await? - .id, - ), - None => Some( - queries::artists::upsert(conn, &details.artist, None) - .await? - .id, - ), + // Use existing artist_id if already set (e.g., from download pipeline). + // Only upsert from MB when the track has no artist association yet. + let artist_id = if track.artist_id.is_some() { + track.artist_id + } else { + match &details.artist_mbid { + Some(mbid) => Some( + queries::artists::upsert(conn, &details.artist, Some(mbid)) + .await? + .id, + ), + None => Some( + queries::artists::upsert(conn, &details.artist, None) + .await? + .id, + ), + } }; // Upsert album from best release