Remove duplicate sheet db entries on sheet validation

This commit is contained in:
Julian Mutter 2025-03-21 18:10:35 +01:00
parent 67d5dac0d1
commit bdc2e7a050
2 changed files with 15 additions and 0 deletions

View File

@ -81,6 +81,19 @@ pub async fn get_composer_by_id(database: &Database, id: i64) -> sqlx::Result<Co
.await
}
pub async fn remove_duplicate_sheets(database: &Database) -> 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<Vec<Sheet>> {
let mut sheets: Vec<Sheet> = Vec::new();

View File

@ -13,6 +13,8 @@ pub async fn load_and_validate_sheets(
database: &Database,
directory: impl AsRef<Path>,
) -> Vec<Sheet> {
sheet_dao::remove_duplicate_sheets(database).await.unwrap();
let sheets = sheet_dao::fetch_all_sheets(database).await.unwrap();
debug!("Validating sheets from database...");