This commit is contained in:
Connor Johnstone
2026-03-24 16:01:59 -04:00
parent 823ef15022
commit 45a7dcd8cd

View File

@@ -72,8 +72,16 @@ impl WorkerManager {
// Read config for concurrency settings and spawn workers // Read config for concurrency settings and spawn workers
let cfg = state_clone.config.read().await.clone(); let cfg = state_clone.config.read().await.clone();
spawn_worker(state_clone.clone(), WorkTaskType::Download, 1); spawn_worker(state_clone.clone(), WorkTaskType::Download, 1);
spawn_worker(state_clone.clone(), WorkTaskType::Index, cfg.indexing.concurrency); spawn_worker(
spawn_worker(state_clone.clone(), WorkTaskType::Tag, cfg.tagging.concurrency); state_clone.clone(),
WorkTaskType::Index,
cfg.indexing.concurrency,
);
spawn_worker(
state_clone.clone(),
WorkTaskType::Tag,
cfg.tagging.concurrency,
);
spawn_worker(state_clone.clone(), WorkTaskType::Organize, 4); spawn_worker(state_clone.clone(), WorkTaskType::Organize, 4);
}); });
} }
@@ -361,11 +369,11 @@ async fn process_index(
break; break;
} }
for track in &tracks { for track in &tracks {
if let Some(ref mbid) = track.musicbrainz_id { if let Some(ref mbid) = track.musicbrainz_id
if !wanted_mbids.contains(mbid.as_str()) { && !wanted_mbids.contains(mbid.as_str())
let tag_payload = serde_json::json!({"track_id": track.id}); {
downstream.push((WorkTaskType::Tag, tag_payload.to_string())); let tag_payload = serde_json::json!({"track_id": track.id});
} downstream.push((WorkTaskType::Tag, tag_payload.to_string()));
} }
} }
offset += 500; offset += 500;
@@ -420,35 +428,34 @@ async fn process_tag(
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
// Ensure a wanted_item exists for this track (marks imported files as Owned) // Ensure a wanted_item exists for this track (marks imported files as Owned)
if let Some(ref mbid) = track.musicbrainz_id { if let Some(ref mbid) = track.musicbrainz_id
if queries::wanted::find_by_mbid(conn, mbid) && queries::wanted::find_by_mbid(conn, mbid)
.await .await
.map_err(|e| e.to_string())? .map_err(|e| e.to_string())?
.is_none() .is_none()
{ {
let item = queries::wanted::add( let item = queries::wanted::add(
conn, conn,
queries::wanted::AddWantedItem { queries::wanted::AddWantedItem {
item_type: shanty_db::entities::wanted_item::ItemType::Track, item_type: shanty_db::entities::wanted_item::ItemType::Track,
name: track.title.as_deref().unwrap_or("Unknown"), name: track.title.as_deref().unwrap_or("Unknown"),
musicbrainz_id: Some(mbid), musicbrainz_id: Some(mbid),
artist_id: track.artist_id, artist_id: track.artist_id,
album_id: track.album_id, album_id: track.album_id,
track_id: Some(track.id), track_id: Some(track.id),
user_id: None, user_id: None,
}, },
) )
.await .await
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
// Mark as Owned immediately since the file already exists // Mark as Owned immediately since the file already exists
let _ = queries::wanted::update_status( let _ = queries::wanted::update_status(
conn, conn,
item.id, item.id,
shanty_db::entities::wanted_item::WantedStatus::Owned, shanty_db::entities::wanted_item::WantedStatus::Owned,
) )
.await; .await;
}
} }
// Create Organize work item // Create Organize work item