diff --git a/src/sheet_dao.rs b/src/sheet_dao.rs index 3347fa3..361defa 100644 --- a/src/sheet_dao.rs +++ b/src/sheet_dao.rs @@ -81,6 +81,19 @@ pub async fn get_composer_by_id(database: &Database, id: i64) -> sqlx::Result sqlx::Result<()> { + for kind in SheetKindDiscriminants::iter() { + let table = kind.get_database_table_name(); + sqlx::query(&format!( + "DELETE FROM {} WHERE id NOT IN (SELECT MIN(id) FROM {} GROUP BY file_hash)", + table, table + )) + .execute(&database.connection) + .await?; + } + Ok(()) +} + pub async fn fetch_all_sheets(database: &Database) -> sqlx::Result> { let mut sheets: Vec = Vec::new(); diff --git a/src/sheet_validation.rs b/src/sheet_validation.rs index 4ea7efa..0900ba0 100644 --- a/src/sheet_validation.rs +++ b/src/sheet_validation.rs @@ -13,6 +13,8 @@ pub async fn load_and_validate_sheets( database: &Database, directory: impl AsRef, ) -> Vec { + sheet_dao::remove_duplicate_sheets(database).await.unwrap(); + let sheets = sheet_dao::fetch_all_sheets(database).await.unwrap(); debug!("Validating sheets from database...");