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