From 49d1d2252e5b711b9429fe5e804197a41de8a7ee Mon Sep 17 00:00:00 2001 From: Connor Johnstone Date: Tue, 24 Mar 2026 15:58:14 -0400 Subject: [PATCH] Added the import/cleanup functionality --- shanty-config/src/lib.rs | 8 ++++++++ shanty-data/src/mb_import.rs | 6 ++++++ shanty-db | 2 +- shanty-index | 2 +- shanty-tag | 2 +- shanty-web | 2 +- 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/shanty-config/src/lib.rs b/shanty-config/src/lib.rs index f42d98c..fc05cdf 100644 --- a/shanty-config/src/lib.rs +++ b/shanty-config/src/lib.rs @@ -69,6 +69,9 @@ pub struct TaggingConfig { #[serde(default = "default_confidence")] pub confidence: f64, + + #[serde(default = "default_tag_concurrency")] + pub concurrency: usize, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -243,10 +246,15 @@ impl Default for TaggingConfig { auto_tag: false, write_tags: true, confidence: default_confidence(), + concurrency: default_tag_concurrency(), } } } +fn default_tag_concurrency() -> usize { + 4 +} + impl Default for DownloadConfig { fn default() -> Self { Self { diff --git a/shanty-data/src/mb_import.rs b/shanty-data/src/mb_import.rs index ead908c..2610bf6 100644 --- a/shanty-data/src/mb_import.rs +++ b/shanty-data/src/mb_import.rs @@ -715,6 +715,9 @@ pub fn run_import( PRAGMA foreign_keys = OFF;", )?; + // Wrap entire import in a transaction so interrupted imports don't leave empty tables + conn.execute_batch("BEGIN;")?; + let mut stats = ImportStats::default(); // Import artists @@ -818,6 +821,9 @@ pub fn run_import( rusqlite::params![stats.recordings.to_string()], )?; + // Commit the transaction — if we got here, everything succeeded + conn.execute_batch("COMMIT;")?; + progress(&format!("Import complete: {stats}")); Ok(stats) } diff --git a/shanty-db b/shanty-db index 1ff385c..cc42f8e 160000 --- a/shanty-db +++ b/shanty-db @@ -1 +1 @@ -Subproject commit 1ff385c826d8734702278849784ac332e714c06f +Subproject commit cc42f8ecbbb424393e8e76ccab4b0fe2d4164736 diff --git a/shanty-index b/shanty-index index 3cba8f8..494de64 160000 --- a/shanty-index +++ b/shanty-index @@ -1 +1 @@ -Subproject commit 3cba8f88c15b5276d5d4e1e7869462521815df7a +Subproject commit 494de64f0a76f568ab326f6dd8132c9bbd63e0aa diff --git a/shanty-tag b/shanty-tag index 82fed6e..8e3d86c 160000 --- a/shanty-tag +++ b/shanty-tag @@ -1 +1 @@ -Subproject commit 82fed6ea6ea274f038d766b7be81e5fa1aa999ea +Subproject commit 8e3d86c25ea494521c17e1f0b2d87fd8ca34bad9 diff --git a/shanty-web b/shanty-web index 1431cd2..823ef15 160000 --- a/shanty-web +++ b/shanty-web @@ -1 +1 @@ -Subproject commit 1431cd2fbc48a3e3a8b5fa310b0aebff36b632cc +Subproject commit 823ef150228be10bd36a79476572b7de17919aec